105 Commits
1.2.0 ... 1.4.4

Author SHA1 Message Date
juewuy
4a59e858e9 v1.4.4-test
~同步最新1.7.1clash核心
~同步最新Geoip数据库文件
2021-10-29 17:51:03 +08:00
juewuy
4bc922dee6 v1.4.5-test
~同步最新1.7.1clash核心
~同步最新Geoip数据库文件
2021-09-16 13:05:08 +08:00
juewuy
2c59be20f3 v1.4.4-test
~适配hanwckf及chongshengb等版本Padavan固件
~增加clash.net核心
~增加脚本设置一键备份还原功能
2021-08-30 18:03:37 +08:00
juewuy
b3a153e684 v1.4.4-test
~适配hanwckf及chongshengb等版本Padavan固件
~增加clash.net核心
~增加脚本设置一键备份还原功能
2021-08-30 18:00:09 +08:00
juewuy
4767a9dc3a v1.4.4-test
~适配hanwckf及chongshengb等版本Padavan固件
~增加clash.net核心
~增加脚本设置一键备份还原功能
2021-08-30 17:49:33 +08:00
juewuy
5159886b64 Merge pull request #74 from light-d/patch-1
Update README_CN.md
2021-08-30 17:10:58 +08:00
juewuy
47437a1826 Merge pull request #72 from w1ndy/patch-1
Change group id to match iptable rules
2021-08-30 17:10:45 +08:00
light-d
d49b36fe2f Update README_CN.md
line67 install_n.sh is not available, use install.sh instead
2021-08-26 01:56:53 +08:00
Di Weng
16ce0c997c Change group id to match iptable rules 2021-08-25 13:38:19 +08:00
juewuy
cd801e120c v1.4.4-test
~适配hanwckf及chongshengb等版本Padavan固件
2021-07-26 16:50:00 +08:00
juewuy
b97bcc14ab v1.4.3-release
~同步最新1.6.5官方核心文件
~同步最新IP数据库文件
~自启脚本的启动优先级调整为99(请重新开关一次开机启动功能)
~redir模式增加强行开启fakeip的开关
~更新脚本时将强制关闭clash服务,以防止各种报错
~增加对vyos使用show作为默认sh的判断
~现在只有开启本机代理后才会代理本机的docker流量
2021-07-17 22:26:41 +08:00
juewuy
f539fe74da v1.4.2-test
~同步最新1.6.5官方核心文件
~同步最新IP数据库文件
~自启脚本的启动优先级调整为99(请重新开关一次开机启动功能)
~redir模式增加强行开启fakeip的开关
~更新脚本时将强制关闭clash服务,以防止各种报错
~增加对vyos使用show作为默认sh的判断
2021-07-11 01:03:43 +08:00
juewuy
96d508cd63 Merge pull request #48 from lunjielee/master
clash.service: add LimitNOFILE to 999999
2021-07-05 09:57:09 +08:00
lunjielee
565c39892a Update yacd to v0.3.2 2021-06-27 19:53:46 +08:00
lunjielee
8f5df3e1f2 clash.service: add LimitNOFILE to 999999 2021-06-27 19:41:27 +08:00
juewuy
5e85716538 Merge branch 'master' of https://github.com/juewuy/ShellClash into master 2021-06-26 16:22:01 +08:00
juewuy
156a24fa5a v1.4.1-正式版
适配:
~适配Padavan系统及梅林固件(限384以上版本)
~适配移动ax18等低版本内核设备
功能:
~更新最新版本Geoip数据库文件
~增加CN-IP绕过内核功能
~增加对谷歌dns的强制代理配置(用于解决奈飞TV端问题)
~本机代理功能增加iptables增强模式
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加clash -u卸载命令
~增加了部分fake-ip-filter地址
优化:
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~大量菜单描述相关优化
BUG修复:
~修复部分设备1.4.0覆盖更新后无法开机启动的bug
~修复mesh设备开机启动后clash无法正常工作的bug
~修复小闪存模式设为Github源时无法正常开机启动的bug
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~自定义host功能bug修复
~导入配置相关bug修复
~修复crontab命令偶尔报错的问题
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-26 16:21:49 +08:00
juewuy
e9b7a1b595 Merge pull request #46 from A7T/patch-1
因未使用root而终止安装时,安装脚本须返回非0值
2021-06-26 16:16:14 +08:00
A7T
b6068a50e4 Fix. 2021-06-26 15:51:46 +08:00
A7T
a1213e148e 因未使用root而终止安装时,安装脚本需返回非0值
```bash
: && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
:                                           ^^
:                                           脚本返回非0值,后续命令不应继续执行
```
2021-06-26 15:34:00 +08:00
juewuy
1b83ca2a39 v1.4.1-test
~适配部分没有crontab的梅林设备
~不再使用cat对比yaml配置文件
~修复部分设备无法正常开机启动的bug
2021-06-26 15:11:07 +08:00
juewuy
35e998e697 v1.4.1-test
~适配部分没有crontab的梅林设备
~不再使用cat对比yaml配置文件
2021-06-25 00:23:32 +08:00
juewuy
77293e2463 v1.4.1-test
~适配部分没有crontab的梅林设备
2021-06-24 23:21:23 +08:00
juewuy
19fe2f183e v1.4.1-test
~适配部分没有crontab的梅林设备
2021-06-24 23:16:28 +08:00
juewuy
79b31af092 v1.4.0-正式版
适配:
~适配Padavan系统及梅林固件(限384以上版本)
~适配移动ax18等低版本内核设备
功能:
~更新最新版本Geoip数据库文件
~增加CN-IP绕过内核功能
~增加对谷歌dns的强制代理配置(用于解决奈飞TV端问题)
~本机代理功能增加iptables增强模式
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加clash -u卸载命令
~增加了部分fake-ip-filter地址
优化:
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~大量菜单描述相关优化
BUG修复:
~修复mesh设备开机启动后clash无法正常工作的bug
~修复小闪存模式设为Github源时无法正常开机启动的bug
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~自定义host功能bug修复
~导入配置相关bug修复
~修复crontab命令偶尔报错的问题
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-23 19:39:05 +08:00
juewuy
dca1e9a233 v1.4.0-正式版
适配:
~适配Padavan系统及梅林固件(限384以上版本)
~适配移动ax18等低版本内核设备
功能:
~增加CN-IP绕过内核功能
~增加对谷歌dns的强制代理配置(用于解决奈飞TV端问题)
~本机代理功能增加iptables增强模式
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加clash -u卸载命令
~增加了部分fake-ip-filter地址
优化:
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~大量菜单描述相关优化
BUG修复:
~修复mesh设备开机启动后clash无法正常工作的bug
~修复小闪存模式设为Github源时无法正常开机启动的bug
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~自定义host功能bug修复
~导入配置相关bug修复
~修复crontab命令偶尔报错的问题
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-23 19:33:17 +08:00
juewuy
4b39cae099 适配某些辣鸡机场的配置文件 2021-06-23 18:32:06 +08:00
juewuy
cb732fd3d7 适配某些辣鸡机场的配置文件 2021-06-23 02:07:57 +08:00
juewuy
fc80994cc5 v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~自定义规则描述优化
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-22 23:09:50 +08:00
juewuy
7604c6bbff v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~自定义规则描述优化
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-22 22:53:09 +08:00
juewuy
5f1bd6accb v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~自定义规则描述优化
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-22 22:50:30 +08:00
juewuy
c1d57536bd Merge pull request #44 from A7T/patch-2
Update getdate.sh
2021-06-22 22:48:03 +08:00
juewuy
77c5d37076 v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~自定义规则描述优化
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-22 18:01:09 +08:00
管子工具箱
2a2e1b546c Update getdate.sh
Fix a typo.
2021-06-22 13:42:39 +08:00
juewuy
1512e7b175 v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-22 11:29:49 +08:00
juewuy
c7ad9ef52c v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~修复保存设置时部分bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-22 11:14:43 +08:00
juewuy
7337d266aa Merge pull request #43 from A7T/patch-1
Update clash.sh
2021-06-22 10:56:17 +08:00
juewuy
652371aed2 v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-21 19:44:19 +08:00
juewuy
52ec559100 v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加支持本机Docker代理(需docker网卡设置为bridge模式)
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-21 19:43:52 +08:00
管子工具箱
fa9c890701 Update clash.sh
BUG修复:

**clash** > **7 clash进阶设置** > **6 手动指定相关端口、秘钥及本机host** > **8 指定本机host地址**

```text
hostdir=':9999/ui'
host=127.0.0.1
```

修改后的匹配方案虽然仍有不足但暂且够用。
2021-06-21 01:23:24 +08:00
juewuy
5bcd9b7bfc v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-20 23:43:50 +08:00
juewuy
00ef3cb3a7 v1.4.0-pre-release
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~优化安装脚本及安装说明
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-20 23:32:31 +08:00
juewuy
3832eec3a8 v1.4.0-release
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~局域网过滤黑白名单描述优化
~修复加密DNS无法正确配置的bug
~版本及安装源描述优化,增加HTTP专属源(感谢酱紫表同学提供服务器!)
2021-06-20 21:43:41 +08:00
juewuy
9b6fd10267 v1.3.99-pre-release
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~局域网过滤黑白名单描述优化
2021-06-20 12:01:59 +08:00
juewuy
aa52bd83ce v1.3.99-pre-release
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~局域网过滤黑白名单描述优化
2021-06-20 11:58:53 +08:00
juewuy
c7c249fe48 v1.3.16
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~优化更新机制,修复出错bug
~局域网过滤黑白名单描述优化
~修复下载更新失败时不会正常报错的bug
2021-06-20 01:15:20 +08:00
juewuy
0d44abc82a v1.3.16
~适配移动ax18等低版本内核设备
~增加开启公网访问Dashboard面板及混合代理端口功能
~增加clash -u卸载命令
~局域网过滤黑白名单描述优化
~修复下载更新失败时不会正常报错的bug
~修复无法正确检查更新的bug
2021-06-20 00:56:11 +08:00
juewuy
713592068b v1.3.14
~修复下载更新失败时不会正常报错的bug
~修复无法正确检查更新的bug
~适配移动ax18
2021-06-19 15:35:10 +08:00
juewuy
c6623721d8 v1.3.14
~修复下载更新失败时不会正常报错的bug
~修复无法正确检查更新的bug
~适配移动ax18
2021-06-19 15:23:20 +08:00
juewuy
268e1d4823 v1.3.13
~修复下载更新失败时不会正常报错的bug
~适配移动ax18
2021-06-19 12:04:19 +08:00
juewuy
c61d54a5a7 v1.4.0
~修复下载更新失败时不会正常报错的bug
2021-06-18 13:18:19 +08:00
juewuy
c0ee6d273f v1.3.12-test
~绕过内核功能ipset模块检测修复
~优化对低版本wget命令的支持
~暂时屏蔽对dler.io的特殊处理
~精简部分代码
~修复部分情况无法正常检查更新的bug
~修复本机代理增强模式部分bug
2021-06-17 22:45:41 +08:00
juewuy
4323d8fb86 v1.3.11-test
~绕过内核功能ipset模块检测修复
~优化对低版本wget命令的支持
~暂时屏蔽对dler.io的特殊处理
~精简部分代码
~修复部分情况无法正常检查更新的bug
2021-06-17 22:00:10 +08:00
juewuy
d067bb7ff0 v1.3.11-test
~绕过内核功能ipset模块检测修复
~优化对低版本wget命令的支持
~暂时屏蔽对dler.io的特殊处理
~精简部分代码
~修复部分情况无法正常检查更新的bug
2021-06-17 20:08:04 +08:00
juewuy
608337ffb2 v1.3.11-test
~绕过内核功能ipset模块检测修复
~优化对低版本wget命令的支持
~暂时屏蔽对dler.io的特殊处理
~精简部分代码
~修复部分情况无法正常检查更新的bug
2021-06-17 18:23:48 +08:00
juewuy
2c1dfada01 v1.3.10-test
~绕过内核功能ipset模块检测修复
~优化对低版本wget命令的支持
~暂时屏蔽对dler.io的特殊处理
~精简部分代码
2021-06-17 11:17:00 +08:00
juewuy
2789242931 v1.3.9-test
~本机代理相关逻辑优化及bug修复
~本机代理功能增加对保守模式的支持
~绕过内核功能增加ipset模块检测
~增加对低版本wget命令的支持
~增加了使用内核保存节点列表的逻辑
2021-06-16 19:16:33 +08:00
juewuy
d7dd915472 v1.3.9-test
~本机代理相关逻辑优化及bug修复
~本机代理功能增加对保守模式的支持
~绕过内核功能增加ipset模块检测
~增加对低版本wget命令的支持
~增加了使用内核保存节点列表的逻辑
2021-06-16 19:10:16 +08:00
juewuy
97cb5479b1 v1.3.9-test
~本机代理相关逻辑优化及bug修复
~本机代理功能增加对保守模式的支持
~绕过内核功能增加ipset模块检测
~增加对低版本wget命令的支持
~增加了使用内核保存节点列表的逻辑
2021-06-16 18:55:14 +08:00
juewuy
e6bc100326 v1.3.8-test
~修复小闪存模式设为Github源时无法正常开机启动的问题
~优化CN_IP绕过内核功能及提示说明
~更新Geoip数据库和根证书文件
~修复iptables及crontab报错
~屏蔽奈飞修复工具
2021-06-14 13:22:06 +08:00
juewuy
c9d0bf2788 v1.3.7-test
~增加CN_IP绕过内核功能
~更新Geoip数据库和根证书文件
~修复iptables报错
2021-06-13 19:50:19 +08:00
juewuy
df29e3714a v1.3.7-test
~增加CN_IP绕过内核功能
2021-06-13 19:48:33 +08:00
juewuy
aa14a9ee01 v1.3.7-test
~增加CN_IP绕过内核功能
2021-06-13 19:42:06 +08:00
juewuy
2fd2259737 v1.3.7-test
~增加CN_IP绕过内核功能
2021-06-13 19:32:43 +08:00
juewuy
17ab8175e1 v1.3.7-test
~增加CN_IP绕过内核功能
2021-06-13 19:28:19 +08:00
juewuy
3c315f61a1 v1.3.7-test
~增加CN_IP绕过内核功能
2021-06-13 19:12:57 +08:00
juewuy
4e1a9d33bc v1.3.7-test
~增加CN_IP绕过内核功能
2021-06-13 18:54:43 +08:00
juewuy
8906077709 v1.3.6-test
~增加了对生成配置文件时指定clash为文件头的功能
~使用在线生成配置时,强制使用dler.io作为dler的api地址
~非root用户切换运行模式时,增加警告提示
~修复crontab命令偶尔报错的问题
~增加对谷歌dns的强制代理配置(尝试解决奈飞TV端问题)
~增加了部分fake-ip-filter地址
2021-06-12 13:16:54 +08:00
juewuy
f0da10af6e ~增加全新的安装脚本及本地安装辅助文件 2021-06-08 18:10:09 +08:00
juewuy
e7a2fe648e ~增加全新的安装脚本及本地安装辅助文件 2021-06-07 18:46:08 +08:00
juewuy
9018f112a0 ~增加全新的安装脚本及本地安装辅助文件 2021-06-07 18:21:20 +08:00
juewuy
3b6e41221b ~增加全新的安装脚本 2021-06-07 18:20:45 +08:00
juewuy
d4ae7ae4b7 v1.3.6-test
~增加了对生成配置文件时指定clash为文件头的功能
~使用在线生成配置时,强制使用dler.io作为dler的api地址
2021-06-06 14:47:18 +08:00
juewuy
95dfaa0eec v1.3.5-test
~全面适配Padavan及华硕/梅林固件!
~修复以上固件无法正确开机启动的bug
~修复以上固件定时任务无法保存的bug
~增加对部分小米设备使用redir-host模式无法观看Netflix的修复工具(8-4)
2021-06-05 19:27:28 +08:00
juewuy
262edbf03b v1.3.5-test
~全面适配Padavan及华硕/梅林固件!
~修复以上固件无法正确开机启动的bug
~修复以上固件定时任务无法保存的bug
~增加对部分小米设备使用redir-host模式无法观看Netflix的修复工具(8-4)
2021-06-05 19:17:26 +08:00
juewuy
75740f5fa1 v1.3.4-test
~适配Padavan及华硕固件
2021-06-05 12:56:15 +08:00
juewuy
a2f7552e25 v1.3.4-test
~适配Padavan及华硕固件
2021-06-05 12:53:20 +08:00
juewuy
bc5d16f09c 1.3.4-test
~padavan适配
2021-06-04 16:41:21 +08:00
juewuy
12aea19499 1.3.4-test
~部分描述修改
2021-05-31 16:03:30 +08:00
juewuy
d1fb7370e6 v1.3.3-test
~新手引导提示优化
~大量bug修复
2021-05-29 17:26:10 +08:00
juewuy
9d067a673f Merge branch 'master' of https://github.com/juewuy/ShellClash 2021-05-29 17:01:31 +08:00
juewuy
0e9ef74727 v1.3.3
~修复指定本机host时报错的bug
~新手引导说明调整及bug修复
~修复跳过证书验证功能相关bug
~修复检测配置文件节点相关bug
2021-05-29 16:50:55 +08:00
juewuy
1bc6b7726b v1.3.2-test
~本机代理功能增加iptables增强模式(仅支持Linux系统)
~优化iptables增强模式机制,修复潜在报错
~修复mesh设备开机启动后shellclash无法正常工作的bug(待测试)
2021-05-16 22:28:28 +08:00
juewuy
fcfbc29219 v1.3.2-test
~本机代理功能增加iptables增强模式(仅支持Linux系统)
~优化iptables增强模式机制,修复潜在报错
~修复mesh设备开机启动后shellclash无法正常工作的bug(待测试)
2021-05-16 22:10:10 +08:00
juewuy
734c8d3f4a v1.3.1-test
~本机代理功能增加iptables增强模式(仅支持Linux系统)
2021-05-15 16:26:44 +08:00
juewuy
64c50d3305 v1.2.6-test
~增加Linux系统本机代理增强模式
2021-05-15 16:25:18 +08:00
juewuy
674c7872f3 ~同步最新1.6.0clash核心及premium核心
~同步最新Geoip数据库文件
~新增在修改加密DNS时,一键下载本地根证书的功能
~修复导入不包含port信息的配置文件时,文件内容出错的bug
~Redir模式调整为仅支持redir_host的DNS模式
~增加禁用小米路由器自动更新功能(7-8)
~新手引导增加检测及开启本机ip转发的功能
~将22与8080添加为默认的常用端口
~修复定时任务文件会出现大量空行的bug
~增加开启外网远程访问SSH的功能(限openwrt设备)
~修复部分设备始终提示证书错误的bug
~在线生成配置功能中增加了部分游戏规则
~替换了部分在线sub服务器地址
~默认加密DNS中部分替换为dot协议
~修改了判定Tun虚拟网卡支持的命令
~增加了对Script规则的自动识别机制
2021-05-15 13:12:31 +08:00
juewuy
ad251d858c v1.3.0-release
~同步最新1.6.0clash核心及premium核心
~同步最新Geoip数据库文件
~新增在修改加密DNS时,一键下载本地根证书的功能
~修复导入不包含port信息的配置文件时,文件内容出错的bug
~Redir模式调整为仅支持redir_host的DNS模式
~增加禁用小米路由器自动更新功能(7-8)
~新手引导增加检测及开启本机ip转发的功能
~将22与8080添加为默认的常用端口
~修复定时任务文件会出现大量空行的bug
~增加开启外网远程访问SSH的功能(限openwrt设备)
~修复部分设备始终提示证书错误的bug
~在线生成配置功能中增加了部分游戏规则
~替换了部分在线sub服务器地址
~默认加密DNS中部分替换为dot协议
~修改了判定Tun虚拟网卡支持的命令
~增加了对Script规则的自动识别机制
2021-05-15 13:02:55 +08:00
juewuy
d292c91032 v1.2.6-test
~同步最新1.6.0clash核心及premium核心
2021-05-11 19:07:47 +08:00
juewuy
3e7d70c7c3 v1.2.5-test
~修复在线游戏规则无法选择的bug
~同步最新Geoip数据库文件
2021-05-07 11:34:05 +08:00
juewuy
adac4c669a v1.2.5-test
~修复在线游戏规则无法选择的bug
2021-05-07 11:28:05 +08:00
juewuy
be0392f240 Merge branch 'master' of https://github.com/juewuy/ShellClash into master 2021-05-07 11:15:01 +08:00
juewuy
8dbf58dc74 v1.2.5-test
~修复在线游戏规则无法选择的bug
2021-05-07 11:13:55 +08:00
juewuy
80c2a551d0 v1.2.4
~修复规则无法选择的bug
2021-04-28 15:11:39 +08:00
juewuy
f780cc2c48 v1.2.4-test
~在线生成配置功能中增加了部分游戏规则
~替换了部分在线sub服务器地址
~默认加密DNS中部分替换为dot协议
~修改了判定Tun虚拟网卡支持的命令
~增加了对Script规则的自动识别机制
2021-04-19 12:10:26 +08:00
juewuy
ca4873fbe8 v1.2.4-test
~在线生成配置功能中增加了部分游戏规则
~替换了部分在线sub服务器地址
~默认加密DNS中部分替换为dot协议
~修改了判定Tun虚拟网卡支持的命令
~增加了对Script规则的自动识别机制
2021-04-19 12:10:09 +08:00
juewuy
15105dd07e 增加游戏规则 2021-04-19 11:43:50 +08:00
juewuy
7a40224fc3 增加游戏规则 2021-04-19 11:31:39 +08:00
juewuy
9bf8569f23 增加游戏规则 2021-04-19 11:11:30 +08:00
juewuy
ffeb43d127 v1.2.3-test
~增加开启外网远程访问SSH的功能(限openwrt设备)
~修复部分设备始终提示证书错误的bug
2021-04-15 17:02:36 +08:00
juewuy
6945287e11 v1.2.3-test
~增加开启外网远程访问SSH的功能(限openwrt设备)
~修复部分设备始终提示证书错误的bug
2021-04-15 16:50:56 +08:00
juewuy
8076b752f7 v1.2.2-test
~Redir模式调整为仅支持redir_host的DNS模式
~增加禁用小米路由器自动更新功能(7-8)
~新手引导增加检测及开启本机ip转发的功能
~将22与8080添加为默认的常用端口
~同步官方1.5.0版本clash核心文件及premium核心文件
~同步最新Geoip数据库文件
~修复定时任务文件会出现大量空行的bug
2021-04-09 14:35:47 +08:00
juewuy
b75eddd710 v1.2.2-test
~Redir模式调整为仅支持redir_host的DNS模式
~增加禁用小米路由器自动更新功能(7-8)
~新手引导增加检测及开启本机ip转发的功能
~将22与8080添加为默认的常用端口
~修复定时任务文件会出现大量空行的bug
2021-04-09 14:34:01 +08:00
juewuy
282d0aa161 v1.2.1-test
~新增在修改加密DNS时,一键下载本地根证书的功能
~修复导入不包含port信息的配置文件时,文件内容出错的bug
2021-03-26 15:29:59 +08:00
juewuy
7a13de8439 v1.2.1-test
~新增在修改加密DNS时,一键下载本地根证书的功能
~修复导入不包含port信息的配置文件时,文件内容出错的bug
2021-03-26 15:29:30 +08:00
44 changed files with 7084 additions and 530 deletions

View File

@@ -37,21 +37,33 @@ opkg update && opkg install curl
##### ~Use curl:<br> ##### ~Use curl:<br>
```Shell ```Shell
#Release version - by github #By 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 export url='https://raw.githubusercontent.com/juewuy/ShellClash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
#Release version - by jsdelivrCDN #By jsdelivrCDN
sh -c "$(curl -kfsSl https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/install.sh)" && source /etc/profile &> /dev/null export url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
#Test version - by 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
``` ```
##### ~Use wget<br> ##### ~Use wget<br>
```sh ```sh
#Release version - by jsdelivrCDN #By jsdelivrCDN
wget -q --no-check-certificate -O /tmp/install.sh https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null export url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
``` ```
~**Use a low version of wget (prompt not to support https) local installation**:<br> First clone the project to the local under the window (or [click to download the project source code zip package](https://github.com/juewuy/ShellClash/archive/refs/heads/master.zip) to the local and decompress it)
```sh
sh git clone https://github.com/juewuy/ShellClash.git
```
Then open /project address/ShellClash/bin/hfs/hfs.exe Click menu-add directory from disk-{find the directory where ShellClash source code is located}-add as real directory Click on the menu-IP address-{choose the actual IP address of your LAN} Click ShellClash-click to copy to clipboard Then use the following command to install in SSH
```sh
sh export url='Paste the copied address here' && wget -q -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
```
Later, when updating the version, you need to update the local version library and open the hfs service, and then update in the SSH menu, and then you can build a local server through hfs to realize the function of uploading and updating the yaml configuration file
~**After installation by non-root users**, please execute the following additional commands to read environment variables:<br> ~**After installation by non-root users**, please execute the following additional commands to read environment variables:<br>
```shell ```shell
@@ -63,6 +75,7 @@ source ~/.bashrc &> /dev/null
```Shell ```Shell
clash #normal mode clash #normal mode
clash -h #help clash -h #help
clash -u #uninstall
clash -t #test mode clash -t #test mode
``` ```
@@ -98,9 +111,11 @@ ubus/iproute-doc minimal The host address of the machine cannot be obtained nor
### [See blog for details](https://juewuy.github.io) ### [See blog for details](https://juewuy.github.io)
## Donate this project ## Donate
### [Go to page](https://juewuy.github.io/yOF4Yf06Q/) Alipay WeChat
##### <img src="http://juewuy.github.io/post-images/1604390977172.png" style="zoom:50%;" /><img src="http://juewuy.github.io/post-images/1604391042406.png" style="zoom:50%;" />
## Friendly promotion: ## Friendly promotion:

View File

@@ -21,13 +21,13 @@
~通过管理脚本在Shell环境下便捷使用[Clash](https://github.com/Dreamacro/clash)<br> ~通过管理脚本在Shell环境下便捷使用[Clash](https://github.com/Dreamacro/clash)<br>
~支持在Shell环境下管理[Clash各种功能](https://lancellc.gitbook.io/clash)<br> ~支持在Shell环境下管理[Clash各种功能](https://lancellc.gitbook.io/clash)<br>
~支持在线导入[Clash](https://github.com/Dreamacro/clash)支持的分享、订阅及配置链接<br>~支持配置定时任务,支持配置文件定时更新<br>~支持在线安装及使用本地网页面板管理内置规则<br> ~支持在线导入[Clash](https://github.com/Dreamacro/clash)支持的分享、订阅及配置链接<br>~支持配置定时任务,支持配置文件定时更新<br>~支持在线安装及使用本地网页面板管理内置规则<br>
~支持路由模式、本机模式等多种模式切换<br>~支持GNOME、KDE桌面自动配置本机模式<br>~支持在线更新<br> ~支持路由模式、本机模式等多种模式切换<br>~支持在线更新<br>
设备支持: 设备支持:
-- --
~支持各种基于OpenWrt或使用OpenWrt二次定制开发的路由器设备<br> ~支持各种基于OpenWrt或使用OpenWrt二次定制开发的路由器设备<br>
~支持各种运行标准Linux系统如Debian/CenOS/Armbian等的设备<br>~兼容Padavan固件保守模式、潘多拉固件<br>~兼容各类使用Linux内核定制开发的各类型设备<br> ~支持各种运行标准Linux系统如Debian/CenOS/Armbian等的设备<br>~兼容Padavan固件保守模式、潘多拉固件以及华硕/梅林固件<br>~兼容各类使用Linux内核定制开发的各类型设备<br>
——————————<br> ——————————<br>
~更多设备支持请提issue或前往TG群反馈需提供设备名称及运行uname -a返回的设备核心信息<br> ~更多设备支持请提issue或前往TG群反馈需提供设备名称及运行uname -a返回的设备核心信息<br>
@@ -36,10 +36,10 @@
-- --
~确认路由器设备已经开启SSH并获取root权限带GUI桌面的Linux设备可使用自带终端安装<br> ~确认路由器设备已经开启SSH并获取root权限带GUI桌面的Linux设备可使用自带终端安装<br>
~使用SSH连接工具如puttyJuiceSSH系统自带终端等路由器或Linux设备的SSH管理界面或终端界面并切换到root用户<br> ~使用SSH连接工具如puttyJuiceSSH系统自带终端等路由器或Linux设备的SSH管理界面或终端界面并切换到root用户<br>
~确认设备已经安装curl或者wget下载工具。如未安装LInux设备请[参考此处](https://www.howtoing.com/install-curl-in-linux)安装curl基于OpenWrt小米官方系统、潘多拉、高恪等的设备请使用如下命令安装curl<br> ~确认设备已经安装curl或者wget下载工具。**如未安装**LInux设备请[参考此处](https://www.howtoing.com/install-curl-in-linux)安装curl基于OpenWrt小米官方系统、潘多拉、高恪等的设备请使用如下命令安装curl<br>
```shell ```shell
opkg update && opkg install curl opkg update && opkg install curl #如已安装请忽略
``` ```
~之后在SSH界面执行如下安装命令并按照后续提示完成安装<br> ~之后在SSH界面执行如下安装命令并按照后续提示完成安装<br>
@@ -47,19 +47,24 @@ opkg update && opkg install curl
~**使用curl安装**<br> ~**使用curl安装**<br>
```Shell ```Shell
#Release版本-github直连 #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 export url='https://raw.githubusercontent.com/juewuy/ShellClash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
#Release版本-jsdelivrCDN源 #jsdelivrCDN源
sh -c "$(curl -kfsSl https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/install.sh)" && source /etc/profile &> /dev/null export url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' && sh -c "$(curl -kfsSl $url/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
``` ```
~**使用wget安装**<br> ~**使用wget安装**<br>
```sh ```sh
#Release版本-jsdelivrCDN源 #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 && source /etc/profile &> /dev/null export url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
```
~**使用低版本wget提示不支持https安装**<br>
```sh
#Test版本-酱紫表私人http源
export url='http://sc.qust.me/' && wget -q -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
``` ```
~**非root用户安装后**请额外执行以下命令以读取环境变量:<br> ~**非root用户安装后**请额外执行以下命令以读取环境变量:<br>
@@ -73,6 +78,7 @@ source ~/.bashrc &> /dev/null
```Shell ```Shell
clash #正常模式运行 clash #正常模式运行
clash -h #脚本帮助及说明 clash -h #脚本帮助及说明
clash -u #卸载脚本
clash -t #测试模式运行 clash -t #测试模式运行
``` ```
@@ -108,9 +114,11 @@ ubus/iproute-doc 极低 缺少时无法正常获取本机host地址
### [详见博客](https://juewuy.github.io) ### [详见博客](https://juewuy.github.io)
## 捐赠此项目 ## 请喝杯茶
### [前往页面](https://juewuy.github.io/yOF4Yf06Q/) 支付宝 微信
##### <img src="http://juewuy.github.io/post-images/1604390977172.png" style="zoom:50%;" /><img src="http://juewuy.github.io/post-images/1604391042406.png" style="zoom:50%;" />
友情推广: 友情推广:
-- --

Binary file not shown.

View File

@@ -1,7 +1,7 @@
## ##
## Bundle of CA Root Certificates ## Bundle of CA Root Certificates
## ##
## Certificate data from Mozilla as of: Tue Feb 9 22:06:19 2021 GMT ## Certificate data from Mozilla as of: Sat Jun 12 22:07:57 2021 GMT
## ##
## This is a bundle of X.509 certificates of public Certificate Authorities ## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates ## (CA). These were automatically extracted from Mozilla's root certificates
@@ -14,7 +14,7 @@
## Just configure this file as the SSLCACertificateFile. ## Just configure this file as the SSLCACertificateFile.
## ##
## Conversion done with mk-ca-bundle.pl version 1.28. ## Conversion done with mk-ca-bundle.pl version 1.28.
## SHA256: 3bdc63d1de27058fec943a999a2a8a01fcc6806a611b19221a7727d3d9bbbdfd ## SHA256: e292bd4e2d500c86df45b830d89417be5c42ee670408f1d2c454c63d8a782865
## ##
@@ -718,51 +718,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
-----END CERTIFICATE----- -----END CERTIFICATE-----
GeoTrust Primary Certification Authority - G2
=============================================
-----BEGIN CERTIFICATE-----
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
npaqBA+K
-----END CERTIFICATE-----
VeriSign Universal Root Certification Authority
===============================================
-----BEGIN CERTIFICATE-----
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
mJO37M2CYfE45k+XmCpajQ==
-----END CERTIFICATE-----
NetLock Arany (Class Gold) Főtanúsítvány NetLock Arany (Class Gold) Főtanúsítvány
======================================== ========================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@@ -938,82 +893,6 @@ Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
-----END CERTIFICATE----- -----END CERTIFICATE-----
Chambers of Commerce Root - 2008
================================
-----BEGIN CERTIFICATE-----
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
-----END CERTIFICATE-----
Global Chambersign Root - 2008
==============================
-----BEGIN CERTIFICATE-----
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
-----END CERTIFICATE-----
Go Daddy Root Certificate Authority - G2 Go Daddy Root Certificate Authority - G2
======================================== ========================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@@ -1980,36 +1859,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
-----END CERTIFICATE----- -----END CERTIFICATE-----
Staat der Nederlanden Root CA - G3
==================================
-----BEGIN CERTIFICATE-----
MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC
TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y
olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t
x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy
EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K
Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur
mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5
1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp
07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo
FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE
41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB
AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu
yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq
KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1
v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA
8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b
8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r
mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq
1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI
JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV
tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk=
-----END CERTIFICATE-----
Staat der Nederlanden EV Root CA Staat der Nederlanden EV Root CA
================================ ================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@@ -3226,3 +3075,64 @@ qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG
I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg
kpzNNIaRkPpkUZ3+/uul9XXeifdy kpzNNIaRkPpkUZ3+/uul9XXeifdy
-----END CERTIFICATE----- -----END CERTIFICATE-----
AC RAIZ FNMT-RCM SERVIDORES SEGUROS
===================================
-----BEGIN CERTIFICATE-----
MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF
UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy
NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4
MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt
UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB
QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2
LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG
SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD
zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c=
-----END CERTIFICATE-----
GlobalSign Root R46
===================
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv
b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX
BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es
CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/
r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje
2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt
bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj
K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4
12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on
ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls
eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9
vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM
BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg
JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy
gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92
CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm
OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq
JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye
qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz
nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7
DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3
QEUxeCp6
-----END CERTIFICATE-----
GlobalSign Root E46
===================
-----BEGIN CERTIFICATE-----
MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT
AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg
RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV
BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB
jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj
QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL
gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk
vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
CAezNIm8BZ/3Hobui3A=
-----END CERTIFICATE-----

6054
bin/china_ip_list.txt Normal file

File diff suppressed because it is too large Load Diff

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.

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

BIN
bin/hfs/hfs.exe Normal file

Binary file not shown.

View File

@@ -1,8 +1,8 @@
1.4.4
1.3.0
1.2.0 1.2.0
1.1.0 1.1.0
1.0.0beta18.2
1.0.0beta17 1.0.0beta17
1.0.0beta15
1.0.0beta11 1.0.0beta11
1.0.0beta5 1.0.0beta5
0.9.7 0.9.7

View File

@@ -1,4 +1,5 @@
clash_v=1.4.2 clashnet_v=1.7.3
clashpre_v=2021.03.10 versionsh=1.4.4-test
GeoIP_v=20210322 clash_v=1.7.1
versionsh=1.2.0 clashpre_v=2021.09.15
GeoIP_v=202109150303

Binary file not shown.

View File

@@ -2,7 +2,7 @@
# Copyright (C) Juewuy # Copyright (C) Juewuy
echo='echo -e' && [ -n "$(echo -e|grep e)" ] && echo=echo echo='echo -e' && [ -n "$(echo -e|grep e)" ] && echo=echo
[ -z "$1" ] && test=0 || test=$1 #[ -z "$1" ] && test=0 || test=$1
echo "***********************************************" echo "***********************************************"
echo "** 欢迎使用 **" echo "** 欢迎使用 **"
@@ -10,13 +10,15 @@ echo "** ShellClash **"
echo "** by Juewuy **" echo "** by Juewuy **"
echo "***********************************************" echo "***********************************************"
[ -f "/etc/storage/started_script.sh" ] && systype=Padavan && initdir='/etc/storage/started_script.sh'
[ -f "/jffs/.asusrouter" ] && systype=asusrouter && initdir='/jffs/.asusrouter'
#检查root权限 #检查root权限
if [ "$USER" != "root" ];then if [ "$USER" != "root" -a -z "$systype" ];then
echo 当前用户:$USER echo 当前用户:$USER
$echo "\033[31m请尽量使用root用户但绝对不要使用sudo命令执行安装!\033[0m" $echo "\033[31m请尽量使用root用户不要直接使用sudo命令执行安装!\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "仍要安装?可能会产生大量未知错误!(1/0) > " res read -p "仍要安装?可能会产生未知错误!(1/0) > " res
[ "$res" != "1" ] && exit [ "$res" != "1" ] && exit 1
fi fi
webget(){ webget(){
#参数【$1】代表下载目录【$2】代表在线地址 #参数【$1】代表下载目录【$2】代表在线地址
@@ -26,37 +28,51 @@ webget(){
[ -z "$4" ] && redirect='-L' || redirect='' [ -z "$4" ] && redirect='-L' || redirect=''
result=$(curl -w %{http_code} --connect-timeout 5 $progress $redirect -ko $1 $2) result=$(curl -w %{http_code} --connect-timeout 5 $progress $redirect -ko $1 $2)
else else
if wget --version > /dev/null 2>&1;then
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress' [ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$4" = "rediroff" ] && redirect='--max-redirect=0' || redirect=''
certificate='--no-check-certificate'
timeout='--timeout=3'
fi
[ "$3" = "echoon" ] && progress='' [ "$3" = "echoon" ] && progress=''
[ -z "$4" ] && redirect='' || redirect='--max-redirect=0' [ "$3" = "echooff" ] && progress='-q'
wget -Y on $progress $redirect --no-check-certificate --timeout=5 -O $1 $2 wget $progress $redirect $certificate $timeout -O $1 $2
[ $? -eq 0 ] && result="200" [ $? -eq 0 ] && result="200"
fi fi
} }
#检查更新 #检查更新
url="https://cdn.jsdelivr.net/gh/juewuy/ShellClash" [ -z "$url" ] && url="https://cdn.jsdelivr.net/gh/juewuy/ShellClash"
if [ "$test" -gt 0 ];then #选择版本
url="https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master" echo -----------------------------------------------
[ "$test" -eq 2 ] && url="http://192.168.31.31:8080/ShellClash" $echo "\033[33m请选择想要安装的版本\033[0m"
[ "$test" -eq 3 ] && url="http://192.168.123.90:8080/clash-for-Miwifi" $echo " 1 \033[32mShellclash正式版\033[0m"
$echo " 2 \033[31mShellclash测试版\033[0m"
echo -----------------------------------------------
read -p "请输入相应数字 > " num
if [ -z $num ];then
echo 安装已取消
exit 1;
elif [ "$num" = "1" ];then
webget /tmp/clashrelease $url/bin/release_version echoon rediroff 2>/tmp/clashrelease
if [ "$result" = "200" ];then
release_new=$(cat /tmp/clashrelease | head -1)
url2="https://cdn.jsdelivr.net/gh/juewuy/ShellClash@$release_new"
else else
webget /tmp/clashrelease $url@master/bin/release_version echoon rediroff 2>/tmp/clashrelease echo "无法切换版本,尝试安装测试版!"
[ "$result" = "200" ] && release_new=$(cat /tmp/clashrelease | head -1)
[ -z "$release_new" ] && release_new=master
url=$url@$release_new
fi fi
webget /tmp/clashversion $url/bin/version echooff fi
[ -z "$url2" ] && url2=$url
webget /tmp/clashversion "$url2/bin/version" echooff
[ "$result" = "200" ] && versionsh=$(cat /tmp/clashversion | grep "versionsh" | awk -F "=" '{print $2}') [ "$result" = "200" ] && versionsh=$(cat /tmp/clashversion | grep "versionsh" | awk -F "=" '{print $2}')
[ -z "$release_new" ] && release_new=$versionsh [ -z "$release_new" ] && release_new=$versionsh
rm -rf /tmp/clashversion rm -rf /tmp/clashversion
rm -rf /tmp/clashrelease rm -rf /tmp/clashrelease
[ -z "$release_new" ] && echo "无法连接服务器!" && exit tarurl=$url2/bin/clashfm.tar.gz
tarurl=$url/bin/clashfm.tar.gz
gettar(){ gettar(){
webget /tmp/clashfm.tar.gz $tarurl webget /tmp/clashfm.tar.gz $tarurl
[ "$result" != "200" ] && echo "文件下载失败!" && exit 1 [ "$result" != "200" ] && echo "文件下载失败!" && exit 1
$clashdir/start.sh stop 2>/dev/null
#解压 #解压
echo ----------------------------------------------- echo -----------------------------------------------
echo 开始解压文件! echo 开始解压文件!
@@ -85,12 +101,17 @@ gettar(){
fi fi
fi fi
#修饰文件及版本号 #修饰文件及版本号
shtype=sh && [ -n "$(ls -l /bin/sh|grep -o dash)" ] && shtype=bash shtype=sh && [ -n "$(ls -l /bin/sh|grep -oE 'dash|show|bash')" ] && shtype=bash
sed -i "s|/bin/sh|/bin/$shtype|" $clashdir/start.sh sed -i "s|/bin/sh|/bin/$shtype|" $clashdir/start.sh
chmod 777 $clashdir/start.sh chmod 777 $clashdir/start.sh
sed -i '/versionsh_l=*/'d $clashdir/mark sed -i '/versionsh_l=*/'d $clashdir/mark
echo versionsh_l=$release_new >> $clashdir/mark echo versionsh_l=$release_new >> $clashdir/mark
#设置更新地址
sed -i '/update_url=*/'d $clashdir/mark
echo update_url=$url >> $clashdir/mark
#设置环境变量 #设置环境变量
[ -w /opt/etc/profile ] && profile=/opt/etc/profile
[ -w /jffs/configs/profile.add ] && profile=/jffs/configs/profile.add
[ -w ~/.bashrc ] && profile=~/.bashrc [ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile [ -w /etc/profile ] && profile=/etc/profile
if [ -n "$profile" ];then if [ -n "$profile" ];then
@@ -102,6 +123,8 @@ gettar(){
echo 无法写入环境变量!请检查安装权限! echo 无法写入环境变量!请检查安装权限!
exit 1 exit 1
fi fi
#华硕/Padavan额外设置
[ -n "$systype" ] && sed -i '/ShellClash初始化/'d $initdir && echo "$clashdir/start.sh init #ShellClash初始化脚本" >> $initdir
#删除临时文件 #删除临时文件
rm -rf /tmp/clashfm.tar.gz rm -rf /tmp/clashfm.tar.gz
rm -rf $clashdir/clashservice rm -rf $clashdir/clashservice
@@ -115,16 +138,20 @@ echo -----------------------------------------------
gettar gettar
echo ----------------------------------------------- echo -----------------------------------------------
echo ShellClash 已经安装成功! echo ShellClash 已经安装成功!
[ "$USER" != "root" ] && echo "请执行【source ~/.bashrc &> /dev/null】命令以加载环境变量" [ "$profile" = "~/.bashrc" ] && echo "请执行【source ~/.bashrc &> /dev/null】命令以加载环境变量"
echo ----------------------------------------------- echo -----------------------------------------------
$echo "\033[33m输入\033[30;47m clash \033[0;33m命令即可管理\033[0m" $echo "\033[33m输入\033[30;47m clash \033[0;33m命令即可管理\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
} }
setdir(){ setdir(){
if [ -n "$systype" ];then
[ "$systype" = "Padavan" ] && dir=/etc/storage
[ "$systype" = "asusrouter" ] && dir=/jffs
else
echo ----------------------------------------------- echo -----------------------------------------------
$echo "\033[33m安装ShellClash至少需要预留约1MB的磁盘空间\033[0m" $echo "\033[33m安装ShellClash至少需要预留约1MB的磁盘空间\033[0m"
$echo " 1 在\033[32m/etc目录\033[0m下安装(适合路由设备)" $echo " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
$echo " 2 在\033[32m/usr/share目录\033[0m下安装(适合大多数设备)" $echo " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux设备)"
$echo " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)" $echo " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
$echo " 4 手动设置安装目录" $echo " 4 手动设置安装目录"
$echo " 0 退出安装" $echo " 0 退出安装"
@@ -133,7 +160,7 @@ read -p "请输入相应数字 > " num
#设置目录 #设置目录
if [ -z $num ];then if [ -z $num ];then
echo 安装已取消 echo 安装已取消
exit; exit 1;
elif [ "$num" = "1" ];then elif [ "$num" = "1" ];then
dir=/etc dir=/etc
elif [ "$num" = "2" ];then elif [ "$num" = "2" ];then
@@ -145,7 +172,7 @@ elif [ "$num" = "4" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo '可用路径 剩余空间:' echo '可用路径 剩余空间:'
df -h | awk '{print $6,$4}'| sed 1d df -h | awk '{print $6,$4}'| sed 1d
echo '路径是必须带 / 的格式,写入虚拟内存(/tmp,/sys,..)的文件会在重启后消失!!!' echo '路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!!!'
read -p "请输入自定义路径 > " dir read -p "请输入自定义路径 > " dir
if [ -z "$dir" ];then if [ -z "$dir" ];then
$echo "\033[31m路径错误请重新设置\033[0m" $echo "\033[31m路径错误请重新设置\033[0m"
@@ -153,12 +180,13 @@ elif [ "$num" = "4" ];then
fi fi
else else
echo 安装已取消!!! echo 安装已取消!!!
exit; exit 1;
fi
fi fi
if [ ! -w $dir ];then if [ ! -w $dir ];then
$echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir $echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir
else else
echo 目标目录磁盘剩余:$(df -h $dir | awk '{print $4}' | sed 1d ) $echo "目标目录\033[32m$dir\033[0m空间剩余:$(df -h $dir | awk '{print $4}' | sed 1d )"
read -p "确认安装?(1/0) > " res read -p "确认安装?(1/0) > " res
[ "$res" = "1" ] && clashdir=$dir/clash || setdir [ "$res" = "1" ] && clashdir=$dir/clash || setdir
fi fi
@@ -190,7 +218,7 @@ if [ -n "$clashdir" ];then
install install
else else
$echo "\033[31m输入错误已取消安装\033[0m" $echo "\033[31m输入错误已取消安装\033[0m"
exit; exit 1;
fi fi
else else
setdir setdir

View File

@@ -0,0 +1,89 @@
[custom]
;不要随意改变关键字,否则会导致出错
;acl4SSR规则
;去广告:支持
;自动测速:支持
;微软分流:支持
;苹果分流:支持
;增强中国IP段支持
;增强国外GFW支持
;设置规则标志位
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list
ruleset=🛑 广告拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list
ruleset=🍃 应用净化,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list
ruleset=📢 谷歌FCM,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list
ruleset=📢 谷歌🇨🇳Play下载,[]DOMAIN-SUFFIX,xn--ngstr-lra8j.com
ruleset=📢 谷歌🇨🇳Play服务,[]DOMAIN-SUFFIX,services.googleapis.cn
ruleset=📢 谷歌🇨🇳Play服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleCNProxyIP.list
ruleset=📢 谷歌🇨🇳,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleCN.list
ruleset=📹 油管视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/YouTube.list
ruleset=📢 谷歌,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Google.list
ruleset=Ⓜ️ 微软云盘,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/OneDrive.list
ruleset=Ⓜ️ 微软服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Microsoft.list
ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list
ruleset=📲 电报消息,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list
ruleset=🎶 网易音乐,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/NetEaseMusic.list
ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Epic.list
ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Sony.list
ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Steam.list
ruleset=🎮 游戏服务,https://raw.githubusercontent.com/LM-Firefly/Rules/master/Game.list
ruleset=🎥 奈飞视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Netflix.list
ruleset=📺 巴哈姆特,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bahamut.list
ruleset=📺 哔哩哔哩,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bilibili.list
ruleset=📺 哔哩哔哩,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/BilibiliHMT.list
ruleset=🌏 国内媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaMedia.list
ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list
ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyGFWlist.list
;ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIp.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list
ruleset=🎯 全球直连,[]GEOIP,CN
ruleset=🐟 漏网之鱼,[]FINAL
;设置规则标志位
;设置分组标志位
custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换`[]DIRECT
custom_proxy_group=🚀 手动切换`select`.*
custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=📲 电报消息`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换`[]DIRECT
custom_proxy_group=📢 谷歌FCM`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=📢 谷歌🇨🇳Play下载`select`[]🚀 节点选择`[]DIRECT`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=📢 谷歌🇨🇳Play服务`select`[]🚀 节点选择`[]DIRECT`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=📢 谷歌🇨🇳`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=📢 谷歌`select`[]🚀 节点选择`[]DIRECT`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=📹 油管视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换`[]DIRECT
custom_proxy_group=🎥 奈飞视频`select`[]🎥 奈飞节点`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换`[]DIRECT
custom_proxy_group=📺 巴哈姆特`select`[]🇨🇳 台湾节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT
custom_proxy_group=📺 哔哩哔哩`select`[]🎯 全球直连`[]🇨🇳 台湾节点`[]🇭🇰 香港节点
custom_proxy_group=🌍 国外媒体`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换`[]DIRECT
custom_proxy_group=🌏 国内媒体`select`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换
custom_proxy_group=Ⓜ️ 微软云盘`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=Ⓜ️ 微软服务`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=🍎 苹果服务`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=🎮 游戏平台`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=🎮 游戏服务`select`[]🎮 游戏节点`[]🎯 全球直连`.*
custom_proxy_group=🎶 网易音乐`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择`(网易|音乐|解锁|Music|NetEase)
custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择
custom_proxy_group=🛑 广告拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🍃 应用净化`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]♻️ 自动选择`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🇰🇷 韩国节点`[]🚀 手动切换
custom_proxy_group=🎮 游戏节点`select`(游戏|Game|game|加速)`
custom_proxy_group=🇭🇰 香港节点`url-test`(港|HK|Hong Kong)`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇯🇵 日本节点`url-test`(日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan)`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇺🇲 美国节点`url-test`(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States)`http://www.gstatic.com/generate_204`300,,150
custom_proxy_group=🇨🇳 台湾节点`url-test`(台|新北|彰化|TW|Taiwan)`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇸🇬 狮城节点`url-test`(新加坡|坡|狮城|SG|Singapore)`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🇰🇷 韩国节点`url-test`(KR|Korea|KOR|首尔|韩|韓)`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🎥 奈飞节点`select`(NF|奈飞|解锁|Netflix|NETFLIX|Media)
;设置分组标志位
enable_rule_generator=true
overwrite_original_rules=true
;clash_rule_base=https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GeneralClashConfig.yml
;luck

View File

@@ -0,0 +1,45 @@
[custom]
;不要随意改变关键字,否则会导致出错
;acl4SSR规则-在线更新版
;去广告:支持
;自动测速:支持
;微软分流:支持
;苹果分流:支持
;增强中国IP段不支持
;增强国外GFW不支持
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list
ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list
ruleset=🍃 应用净化,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list
ruleset=📢 谷歌FCM,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list
ruleset=Ⓜ️ 微软服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Microsoft.list
ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list
ruleset=📲 电报信息,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list
ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list
ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyLite.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list
ruleset=🎮 游戏服务,https://raw.githubusercontent.com/LM-Firefly/Rules/master/Game.list
ruleset=🎯 全球直连,[]GEOIP,CN
ruleset=🐟 漏网之鱼,[]FINAL
custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]DIRECT`.*
custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🎮 游戏服务`select`[]🎮 游戏节点`[]🎯 全球直连`.*
custom_proxy_group=🎮 游戏节点`select`(游戏|Game|game|加速)`
custom_proxy_group=🌍 国外媒体`select`[]🚀 节点选择`[]♻️ 自动选择`[]🎯 全球直连`.*
custom_proxy_group=📲 电报信息`select`[]🚀 节点选择`[]🎯 全球直连`.*
custom_proxy_group=Ⓜ️ 微软服务`select`[]🎯 全球直连`[]🚀 节点选择`.*
custom_proxy_group=🍎 苹果服务`select`[]🚀 节点选择`[]🎯 全球直连`.*
custom_proxy_group=📢 谷歌FCM`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🍃 应用净化`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
enable_rule_generator=true
overwrite_original_rules=true

View File

@@ -0,0 +1,35 @@
[custom]
;不要随意改变关键字,否则会导致出错
;acl4SSR规则-在线版
;去广告:支持
;自动测速:支持
;微软分流:不支持
;苹果分流:不支持
;增强中国IP段不支持
;增强国外GFW不支持
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list
ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list
ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list
ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list
ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list
ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyLite.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list
ruleset=🎮 游戏服务,https://raw.githubusercontent.com/LM-Firefly/Rules/master/Game.list
ruleset=🎯 全球直连,[]GEOIP,CN
ruleset=🐟 漏网之鱼,[]FINAL
custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]DIRECT`.*
custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50
custom_proxy_group=🎮 游戏服务`select`[]🎮 游戏节点`[]🎯 全球直连`.*
custom_proxy_group=🎮 游戏节点`select`(游戏|Game|game|加速)`
custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
enable_rule_generator=true
overwrite_original_rules=true

View File

@@ -9,6 +9,7 @@ ExecStart=/etc/clash/clash -d /etc/clash
ExecStartPost=/etc/clash/start.sh afstart ExecStartPost=/etc/clash/start.sh afstart
Restart=on-failure Restart=on-failure
RestartSec=3s RestartSec=3s
LimitNOFILE=999999
[Install] [Install]

View File

@@ -93,7 +93,7 @@ getconfig(){
setconfig(){ setconfig(){
#参数1代表变量名参数2代表变量值,参数3即文件路径 #参数1代表变量名参数2代表变量值,参数3即文件路径
[ -z "$3" ] && configpath=$clashdir/mark || configpath=$3 [ -z "$3" ] && configpath=$clashdir/mark || configpath=$3
[ -n "$(grep ${1} $configpath)" ] && sed -i "s#${1}=\(.*\)#${1}=${2}#g" $configpath || echo "${1}=${2}" >> $configpath [ -n "$(grep -E "^${1}=" $configpath)" ] && sed -i "s#^${1}=\(.*\)#${1}=${2}#g" $configpath || echo "${1}=${2}" >> $configpath
} }
#启动相关 #启动相关
errornum(){ errornum(){
@@ -245,7 +245,7 @@ setport(){
setconfig host $host setconfig host $host
echo -e "\033[32m已经移除自定义host地址请重新运行脚本以自动获取host\033[0m" echo -e "\033[32m已经移除自定义host地址请重新运行脚本以自动获取host\033[0m"
exit 0 exit 0
elif [ -n "$(echo $host | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}')" ]; then elif [ -n "$(echo $host |grep -E -o '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([1-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])\>' )" ]; then
setconfig host $host setconfig host $host
echo -e "\033[32m设置成功\033[0m" echo -e "\033[32m设置成功\033[0m"
else else
@@ -306,14 +306,19 @@ setdns(){
echo -e "\033[33m已禁用内置DNS\033[0m" echo -e "\033[33m已禁用内置DNS\033[0m"
setdns setdns
elif [ "$num" = 5 ]; then elif [ "$num" = 5 ]; then
source $clashdir/getdate.sh $clashdir/start.sh webget /tmp/ssl_test https://www.baidu.com echooff rediron skipceroff
webget /tmp/ssl_test https://baidu.com echooff rediron skipceroff if [ "$" = "1" ];then
if [ "$result" != "200" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m当前设备未安装openssl服务或者没有根证书无法启用\033[0m" if openssl version >/dev/null 2>&1;then
echo -e "\033[31m当前设备缺少本地根证书请先安装证书\033[0m"
source $clashdir/getdate.sh
setcrt
else
echo -e "\033[31m当前设备未安装OpenSSL无法启用加密DNSLinux系统请自行搜索安装方式\033[0m"
fi
else else
dns_nameserver='https://223.5.5.5/dns-query, https://doh.pub/dns-query, tls://dns.rubyfish.cn:853' dns_nameserver='https://223.5.5.5/dns-query, https://doh.pub/dns-query, tls://dns.rubyfish.cn:853'
dns_fallback='https://1.0.0.1/dns-query, https://8.8.4.4/dns-query, https://doh.opendns.com/dns-query' dns_fallback='tls://1.0.0.1:853, tls://8.8.4.4:853, https://doh.opendns.com/dns-query'
setconfig dns_nameserver \'"$dns_nameserver"\' setconfig dns_nameserver \'"$dns_nameserver"\'
setconfig dns_fallback \'"$dns_fallback"\' setconfig dns_fallback \'"$dns_fallback"\'
echo -e "\033[32m设置成功\033[0m" echo -e "\033[32m设置成功\033[0m"
@@ -413,10 +418,17 @@ macfilter(){
[ -z "$dhcpdir" ] && [ -f /tmp/dnsmasq.leases ] && dhcpdir='/tmp/dnsmasq.leases' [ -z "$dhcpdir" ] && [ -f /tmp/dnsmasq.leases ] && dhcpdir='/tmp/dnsmasq.leases'
[ -z "$dhcpdir" ] && dhcpdir='/dev/null' [ -z "$dhcpdir" ] && dhcpdir='/dev/null'
[ -z "$macfilter_type" ] && macfilter_type='黑名单' [ -z "$macfilter_type" ] && macfilter_type='黑名单'
[ "$macfilter_type" = "黑名单" ] && macfilter_over='白名单' || macfilter_over='黑名单' if [ "$macfilter_type" = "黑名单" ];then
macfilter_over='白名单'
macfilter_scrip='不'
else
macfilter_over='黑名单'
macfilter_scrip=''
fi
###### ######
echo -e "\033[30;47m请在此添加或移除设备\033[0m" echo -e "\033[30;47m请在此添加或移除设备\033[0m"
echo -e "当前过滤方式为:\033[33m$macfilter_type模式\033[0m" echo -e "当前过滤方式为:\033[33m$macfilter_type模式\033[0m"
echo -e "仅列表内设备\033[36m$macfilter_scrip经过\033[0mClash内核"
if [ -n "$(cat $clashdir/mac)" ]; then if [ -n "$(cat $clashdir/mac)" ]; then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "当前已过滤设备为:\033[36m" echo -e "当前已过滤设备为:\033[36m"
@@ -443,7 +455,7 @@ macfilter(){
macfilter_type=$macfilter_over macfilter_type=$macfilter_over
setconfig macfilter_type $macfilter_type setconfig macfilter_type $macfilter_type
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m已切换为$macfilter_type模式\033[0m" echo -e "\033[32m已切换为$macfilter_type模式\033[0m"
macfilter macfilter
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
add_mac add_mac
@@ -463,15 +475,14 @@ macfilter(){
} }
localproxy(){ localproxy(){
[ -z "$local_proxy" ] && local_proxy='未开启' [ -z "$local_proxy" ] && local_proxy='未开启'
[ -z "$local_proxy_type" ] && local_proxy_type='环境变量' [ -z "$local_type" ] && local_type='环境变量'
[ "$local_proxy" = "已开启" ] && proxy_set='禁用' || proxy_set='启用' [ "$local_proxy" = "已开启" ] && proxy_set='禁用' || proxy_set='启用'
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[33m当前本机代理配置方式为\033[32m$local_proxy_type\033[0m" echo -e "\033[33m当前本机代理配置方式为\033[32m$local_type\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 \033[36m$proxy_set本机代理\033[0m" echo -e " 1 \033[36m$proxy_set本机代理\033[0m"
echo -e " 2 使用\033[32m环境变量\033[0m方式配置" echo -e " 2 使用\033[32m环境变量\033[0m方式配置"
echo -e " 3 使用\033[32mGNOME桌面API\033[0m配置" echo -e " 3 使用\033[32miptables增强模式\033[0m配置仅支持Linux系统"
echo -e " 4 使用\033[32mKDE桌面API\033[0m配置"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -489,36 +500,29 @@ localproxy(){
localproxy localproxy
else else
local_proxy=已开启 local_proxy=已开启
$clashdir/start.sh set_proxy $mix_port $db_port setconfig local_proxy $local_proxy
echo -e "\033[32m已经成功使用$local_proxy_type方式配置本机代理~\033[0m" echo -e "\033[32m已经成功使用$local_type方式配置本机代理~\033[0m"
[ "$local_proxy_type" = "环境变量" ] && echo -e "\033[36m如未生效请重新启动终端或重新连接SSH\033[0m" && sleep 1 [ "$local_type" = "环境变量" ] && $clashdir/start.sh set_proxy $mix_port $db_port &&echo -e "\033[36m如未生效请重新启动终端或重新连接SSH\033[0m" && sleep 1
[ "$local_type" = "iptables增强模式" ] && $clashdir/start.sh start
fi fi
else else
local_proxy=未开启 local_proxy=未开启
$clashdir/start.sh unset_proxy
echo -e "\033[33m已经停用本机代理规则\033[0m"
[ "$local_proxy_type" = "环境变量" ] && echo -e "\033[36m如未生效请重新启动终端或重新连接SSH\033[0m" && sleep 1
fi
setconfig local_proxy $local_proxy setconfig local_proxy $local_proxy
$clashdir/start.sh stop
echo -e "\033[33m已经停用本机代理规则并停止clash服务\033[0m"
[ "$local_type" = "环境变量" ] && echo -e "\033[36m如未生效请重新启动终端或重新连接SSH\033[0m" && sleep 1
fi
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
local_proxy_type="环境变量" local_type="环境变量"
setconfig local_proxy_type $local_proxy_type setconfig local_type $local_type
localproxy localproxy
elif [ "$num" = 3 ]; then elif [ "$num" = 3 ]; then
if gsettings --version >/dev/null 2>&1 ;then if [ -w /etc/systemd/system/clash.service -o -w /usr/lib/systemd/system/clash.service -o -x /bin/su ];then
local_proxy_type="GNOME" local_type="iptables增强模式"
setconfig local_proxy_type $local_proxy_type setconfig local_type $local_type
else else
echo -e "\033[31m没有找到GNOME桌面无法设置\033[0m" echo -e "\033[31m当前设备无法使用增强模式\033[0m"
sleep 1
fi
localproxy
elif [ "$num" = 4 ]; then
if kwriteconfig5 -h >/dev/null 2>&1 ;then
local_proxy_type="KDE"
setconfig local_proxy_type $local_proxy_type
else
echo -e "\033[31m没有找到KDE桌面无法设置\033[0m"
sleep 1 sleep 1
fi fi
localproxy localproxy
@@ -540,8 +544,8 @@ clashcfg(){
echo -e "\033[36mTun及混合模式必须使用clashpre核心\033[0m" echo -e "\033[36mTun及混合模式必须使用clashpre核心\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 Redir模式CPU以及内存\033[33m占用较低\033[0m" echo -e " 1 Redir模式CPU以及内存\033[33m占用较低\033[0m"
echo -e " 但\033[31m不支持UDP\033[0m流量转发" echo -e " 但\033[31m不支持UDP\033[0m"
echo -e " 适合\033[32m非游戏用户\033[0m使用" echo -e " 适合\033[32m非外服游戏用户\033[0m使用"
echo -e " 2 混合模式: 使用redir转发TCPTun转发UDP流量" echo -e " 2 混合模式: 使用redir转发TCPTun转发UDP流量"
echo -e " \033[33m速度较快\033[0m\033[31m内存占用略高\033[0m" echo -e " \033[33m速度较快\033[0m\033[31m内存占用略高\033[0m"
echo -e " 适合\033[32m游戏用户、综合用户\033[0m" echo -e " 适合\033[32m游戏用户、综合用户\033[0m"
@@ -559,9 +563,10 @@ clashcfg(){
i= i=
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
redir_mod=Redir模式 redir_mod=Redir模式
dns_mod=redir_host
set_redir_config set_redir_config
elif [ "$num" = 3 ]; then elif [ "$num" = 3 ]; then
modinfo tun >/dev/null 2>&1 ip tuntap >/dev/null 2>&1
if [ "$?" != 0 ];then if [ "$?" != 0 ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m当前设备内核可能不支持开启Tun/混合模式!\033[0m" echo -e "\033[31m当前设备内核可能不支持开启Tun/混合模式!\033[0m"
@@ -573,17 +578,13 @@ clashcfg(){
else else
set_redir_mod set_redir_mod
fi fi
elif [ "$clashcore" = "clash" ] || [ "$clashcore" = "clashr" ];then
echo -----------------------------------------------
echo -e "\033[31m当前核心不支持开启Tun模式请先切换clash核心\033[0m"
sleep 1
else else
redir_mod=Tun模式 redir_mod=Tun模式
dns_mod=fake-ip dns_mod=fake-ip
set_redir_config set_redir_config
fi fi
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
modinfo tun >/dev/null 2>&1 ip tuntap >/dev/null 2>&1
if [ "$?" != 0 ];then if [ "$?" != 0 ];then
echo -e "\033[31m当前设备内核可能不支持开启Tun/混合模式!\033[0m" echo -e "\033[31m当前设备内核可能不支持开启Tun/混合模式!\033[0m"
read -p "是否强制开启?可能无法正常使用!(1/0) > " res read -p "是否强制开启?可能无法正常使用!(1/0) > " res
@@ -593,10 +594,6 @@ clashcfg(){
else else
set_redir_mod set_redir_mod
fi fi
elif [ "$clashcore" = "clash" ] || [ "$clashcore" = "clashr" ];then
echo -----------------------------------------------
echo -e "\033[31m当前核心不支持开启Tun模式请先切换clash核心\033[0m"
sleep 1
else else
redir_mod=混合模式 redir_mod=混合模式
set_redir_config set_redir_config
@@ -622,9 +619,9 @@ clashcfg(){
echo -e "\033[33m切换模式后需要手动重启clash服务以生效\033[0m" echo -e "\033[33m切换模式后需要手动重启clash服务以生效\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 fake-ip模式 \033[32m响应速度更快\033[0m" echo -e " 1 fake-ip模式 \033[32m响应速度更快\033[0m"
echo -e " 可能与某些局域网设备有冲突" echo -e " 兼容性比较差,部分应用可能打不开"
echo -e " 2 redir_host模式\033[32m兼容性更好\033[0m" echo -e " 2 redir_host模式\033[32m兼容性更好\033[0m"
echo -e " 不支持Tun模式可能存在DNS污染" echo -e " 不支持Tun模式抗污染能力略差"
echo " 0 返回上级菜单" echo " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ]; then if [ -z "$num" ]; then
@@ -632,10 +629,20 @@ clashcfg(){
elif [ "$num" = 0 ]; then elif [ "$num" = 0 ]; then
i= i=
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
set_fake_ip(){
dns_mod=fake-ip dns_mod=fake-ip
setconfig dns_mod $dns_mod setconfig dns_mod $dns_mod
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m" echo -e "\033[36m已设为 $dns_mod 模式!!\033[0m"
}
if [ "$redir_mod" = "Redir模式" ];then
echo -----------------------------------------------
read -p "fake-ip与Redir模式兼容性较差是否依然强制使用(1/0) > " res
[ "$res" = 1 ] && set_fake_ip
else
set_fake_ip
fi
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
dns_mod=redir_host dns_mod=redir_host
setconfig dns_mod $dns_mod setconfig dns_mod $dns_mod
@@ -651,6 +658,7 @@ clashcfg(){
[ -z "$common_ports" ] && common_ports=已开启 [ -z "$common_ports" ] && common_ports=已开启
[ -z "$dns_mod" ] && dns_mod=redir_host [ -z "$dns_mod" ] && dns_mod=redir_host
[ -z "$dns_over" ] && dns_over=已开启 [ -z "$dns_over" ] && dns_over=已开启
[ -z "$cn_ip_route" ] && cn_ip_route=未开启
[ -z "$(cat $clashdir/mac)" ] && mac_return=未开启 || mac_return=已启用 [ -z "$(cat $clashdir/mac)" ] && mac_return=未开启 || mac_return=已启用
# #
echo ----------------------------------------------- echo -----------------------------------------------
@@ -660,8 +668,9 @@ clashcfg(){
echo -e " 2 切换DNS运行模式 \033[36m$dns_mod\033[0m" echo -e " 2 切换DNS运行模式 \033[36m$dns_mod\033[0m"
echo -e " 3 跳过本地证书验证: \033[36m$skip_cert\033[0m ————解决节点证书验证错误" echo -e " 3 跳过本地证书验证: \033[36m$skip_cert\033[0m ————解决节点证书验证错误"
echo -e " 4 只代理常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量" echo -e " 4 只代理常用端口: \033[36m$common_ports\033[0m ————用于过滤P2P流量"
echo -e " 5 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑名单/白名单进行过滤" echo -e " 5 过滤局域网设备: \033[36m$mac_return\033[0m ————使用黑/白名单进行过滤"
echo -e " 6 设置本机代理服务: \033[36m$local_proxy\033[0m ————使用环境变量或GUI/api配置本机代理" echo -e " 6 设置本机代理服务: \033[36m$local_proxy\033[0m ————使本机流量经过clash内核"
echo -e " 7 CN_IP绕过内核: \033[36m$cn_ip_route\033[0m ————优化性能不兼容Fake-ip"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 0 返回上级菜单 \033[0m" echo -e " 0 返回上级菜单 \033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
@@ -673,8 +682,8 @@ clashcfg(){
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
if [ "$USER" != "root" -a "$USER" != "admin" ];then if [ "$USER" != "root" -a "$USER" != "admin" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[33m非root用户无法启用静态路由仅可以使用纯净模式\033[0m" read -p "非root用户可能无法正确配置其他模式依然尝试吗(1/0) > " res
sleep 1 [ "$res" = 1 ] && set_redir_mod
else else
set_redir_mod set_redir_mod
fi fi
@@ -717,6 +726,28 @@ clashcfg(){
sleep 1 sleep 1
clashcfg clashcfg
elif [ "$num" = 7 ]; then
echo -----------------------------------------------
if ! ipset -v >/dev/null 2>&1;then
echo -e "\033[31m当前设备缺少ipset模块无法启用绕过功能\033[0m"
sleep 1
elif [ "$dns_mod" = "fake-ip" ];then
echo -e "\033[31m不支持fake-ip模式请将DNS模式更换为Redir-host\033[0m"
sleep 1
clashcfg
else
if [ "$cn_ip_route" = "未开启" ]; then
echo -e "\033[32m已开启CN_IP绕过内核功能\033[0m"
cn_ip_route=已开启
sleep 1
else
echo -e "\033[33m已禁用CN_IP绕过内核功能\033[0m"
cn_ip_route=未开启
fi
setconfig cn_ip_route $cn_ip_route
fi
clashcfg
elif [ "$num" = 9 ]; then elif [ "$num" = 9 ]; then
clashstart clashstart
else else
@@ -729,6 +760,7 @@ clashadv(){
[ -z "$ipv6_support" ] && ipv6_support=未开启 [ -z "$ipv6_support" ] && ipv6_support=未开启
[ -z "$start_old" ] && start_old=未开启 [ -z "$start_old" ] && start_old=未开启
[ -z "$tproxy_mod" ] && tproxy_mod=未开启 [ -z "$tproxy_mod" ] && tproxy_mod=未开启
[ -z "$public_support" ] && public_support=未开启
[ "$bindir" = "/tmp/clash_$USER" ] && mini_clash=已开启 || mini_clash=未开启 [ "$bindir" = "/tmp/clash_$USER" ] && mini_clash=已开启 || mini_clash=未开启
# #
echo ----------------------------------------------- echo -----------------------------------------------
@@ -738,12 +770,13 @@ clashadv(){
echo -e " 1 使用保守方式启动: \033[36m$start_old\033[0m ————切换时会停止clash服务" echo -e " 1 使用保守方式启动: \033[36m$start_old\033[0m ————切换时会停止clash服务"
echo -e " 2 启用ipv6支持: \033[36m$ipv6_support\033[0m ————实验性功能,可能不稳定" echo -e " 2 启用ipv6支持: \033[36m$ipv6_support\033[0m ————实验性功能,可能不稳定"
echo -e " 3 Redir模式udp转发: \033[36m$tproxy_mod\033[0m ————依赖iptables-mod-tproxy" echo -e " 3 Redir模式udp转发: \033[36m$tproxy_mod\033[0m ————依赖iptables-mod-tproxy"
echo -e " 4 启用小闪存模式: \033[36m$mini_clash\033[0m ————启动时方下载核心及数据库文件" echo -e " 4 启用小闪存模式: \033[36m$mini_clash\033[0m ————不保存核心及数据库文件"
echo -e " 5 配置内置DNS服务 \033[36m$dns_no\033[0m" echo -e " 5 允许公网访问: \033[36m$public_support\033[0m ————需要路由拨号+公网IP"
echo -e " 6 手动指定相关端口、秘钥及本机host" echo -e " 6 配置内置DNS服务 \033[36m$dns_no\033[0m"
echo -e " 7 使用自定义配置" echo -e " 7 使用自定义配置"
echo -e " 8 手动指定相关端口、秘钥及本机host"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 8 \033[31m重置\033[0m配置文件" echo -e " 9 \033[31m重置/备份/还原\033[0m脚本设置"
echo -e " 0 返回上级菜单 \033[0m" echo -e " 0 返回上级菜单 \033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -835,6 +868,22 @@ clashadv(){
clashadv clashadv
elif [ "$num" = 5 ]; then elif [ "$num" = 5 ]; then
if [ "$public_support" = "未开启" ]; then
echo -e "\033[32m已开启公网访问Dashboard端口及Http/Sock5代理端口\033[0m"
echo -e "\033[33m安全起见建议设置相关访问密码\033[0m"
public_support=已开启
setconfig public_support $public_support
sleep 1
else
echo -e "\033[32m已禁止公网访问Dashboard端口及Http/Sock5代理端口\033[0m"
echo -e "\033[33m如果你的防火墙默认放行公网流量可能禁用失败\033[0m"
public_support=未开启
setconfig public_support $public_support
sleep 1
fi
clashadv
elif [ "$num" = 6 ]; then
source $ccfg source $ccfg
if [ "$dns_no" = "已禁用" ];then if [ "$dns_no" = "已禁用" ];then
read -p "检测到内置DNS已被禁用是否启用内置DNS(1/0) > " res read -p "检测到内置DNS已被禁用是否启用内置DNS(1/0) > " res
@@ -847,7 +896,7 @@ clashadv(){
fi fi
clashadv clashadv
elif [ "$num" = 6 ]; then elif [ "$num" = 8 ]; then
source $ccfg source $ccfg
if [ -n "$(pidof clash)" ];then if [ -n "$(pidof clash)" ];then
echo ----------------------------------------------- echo -----------------------------------------------
@@ -872,7 +921,7 @@ clashadv(){
EOF EOF
[ ! -f $clashdir/rules.yaml ] && cat > $clashdir/rules.yaml <<EOF [ ! -f $clashdir/rules.yaml ] && cat > $clashdir/rules.yaml <<EOF
#用于编写自定义规则(此处规则将优先生效)(可参考https://lancellc.gitbook.io/clash/clash-config-file/rules) #用于编写自定义规则(此处规则将优先生效)(可参考https://lancellc.gitbook.io/clash/clash-config-file/rules)
#例如“🚀 节点选择”、“🎯 全球直连”这样的自定义规则组必须与config.yaml中的代理规则组相匹配否则将无法运行 #例如“🚀 节点选择”、“🎯 全球直连”这样的自定义规则组必须与config.yaml中的代理规则组相匹配否则将无法运行
# - DOMAIN-SUFFIX,google.com,🚀 节点选择 # - DOMAIN-SUFFIX,google.com,🚀 节点选择
# - DOMAIN-KEYWORD,baidu,🎯 全球直连 # - DOMAIN-KEYWORD,baidu,🎯 全球直连
# - DOMAIN,ad.com,REJECT # - DOMAIN,ad.com,REJECT
@@ -883,30 +932,164 @@ EOF
# - SRC-PORT,7777,DIRECT # - SRC-PORT,7777,DIRECT
EOF EOF
echo -e "\033[32m已经启用自定义配置功能\033[0m" echo -e "\033[32m已经启用自定义配置功能\033[0m"
echo -e "Shell下(部分旧设备可能不显示中文)可\n使用【\033[36mvi $clashdir/user.yaml\033[0m】编辑自定义设定文件;\n使用【\033[36mvi $clashdir/rules.yaml\033[0m】编辑自定义规则文件。"
echo -e "Windows下请\n使用\033[33mwinscp软件\033[0m进入$clashdir目录后手动编辑\033[0m" echo -e "Windows下请\n使用\033[33mwinscp软件\033[0m进入$clashdir目录后手动编辑\033[0m"
echo -e "其他设备请\n使用\033[32mscp命令\033[0m下载文件编辑后上传到$clashdir目录\033[0m" echo -e "Shell下(\033[31m部分旧设备可能不显示中文\033[0m)可\n使用\033[36mvi $clashdir/user.yaml\033[0m】编辑自定义设定文件;\n使用【\033[36mvi $clashdir/rules.yaml\033[0m】编辑自定义规则文件。"
echo -e "如需自定义节点可以在config.yaml文件中修改或者直接替换config.yaml文件\033[0m" echo -e "如需自定义节点可以在config.yaml文件中修改或者直接替换config.yaml文件\033[0m"
sleep 3 sleep 3
clashadv clashadv
elif [ "$num" = 8 ]; then elif [ "$num" = 9 ]; then
read -p "确认重置配置文件?(1/0) > " res echo -e " 1 备份脚本设置"
if [ "$res" = "1" ];then echo -e " 2 还原脚本设置"
echo "versionsh_l=$versionsh_l" > $ccfg echo -e " 3 重置脚本设置"
echo "start_time=$start_time" >> $ccfg echo -e " 0 返回上级菜单"
echo "#标识clash运行状态的文件不明勿动" >> $ccfg echo -----------------------------------------------
echo -e "\033[33m配置文件已重置请重新运行脚本\033[0m" read -p "请输入对应数字 > " num
exit if [ -z "$num" ]; then
errornum
elif [ "$num" = 0 ]; then
i=
elif [ "$num" = 1 ]; then
cp -f $ccfg $ccfg.bak
echo -e "\033[32m脚本设置已备份\033[0m"
elif [ "$num" = 2 ]; then
if [ -f "$ccfg.bak" ];then
mv -f $ccfg $ccfg.bak2
mv -f $ccfg.bak $ccfg
mv -f $ccfg.bak2 $ccfg.bak
echo -e "\033[32m脚本设置已还原(被覆盖的配置已备份!)\033[0m"
else
echo -e "\033[31m找不到备份文件请先备份脚本设置\033[0m"
fi fi
clashadv elif [ "$num" = 3 ]; then
mv -f $ccfg $ccfg.bak
echo -e "\033[32m脚本设置已重置(旧文件已备份!)\033[0m"
fi
echo -e "\033[33m请重新启动脚本\033[0m"
exit 0
else
errornum
fi
}
tools(){
ssh_tools(){
[ -n "$(cat /etc/firewall.user 2>1 | grep '启用外网访问SSH服务')" ] && ssh_ol=禁止 || ssh_ol=开启
[ -z "$ssh_port" ] && ssh_port=10022
echo -----------------------------------------------
echo -e "\033[33m此功能仅针对使用Openwrt系统的设备生效且不依赖clash服务\033[0m"
echo -----------------------------------------------
echo -e " 1 \033[32m修改\033[0m外网访问端口\033[36m$ssh_port\033[0m"
echo -e " 2 \033[32m修改\033[0mSSH访问密码(请连续输入2次后回车)"
echo -e " 3 \033[33m$ssh_ol\033[0m外网访问SSH"
echo -----------------------------------------------
echo -e " 0 返回上级菜单 \033[0m"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
elif [ "$num" = 0 ]; then
i=
elif [ "$num" = 1 ]; then
read -p "请输入端口号(1000-65535) > " num
if [ -z "$num" ]; then
errornum
elif [ $num -gt 65535 -o $num -le 999 ]; then
echo -e "\033[31m输入错误请输入正确的数值(1000-65535)\033[0m"
elif [ -n "$(netstat -ntul |grep :$num)" ];then
echo -e "\033[31m当前端口已被其他进程占用请重新输入\033[0m"
else
ssh_port=$num
setconfig ssh_port $ssh_port
sed -i "/启用外网访问SSH服务/d" /etc/firewall.user
echo -e "\033[32m设置成功请重新开启外网访问SSH功能\033[0m"
fi
sleep 1
ssh_tools
elif [ "$num" = 2 ]; then
passwd
sleep 1
ssh_tools
elif [ "$num" = 3 ]; then
if [ "$ssh_ol" = "开启" ];then
iptables -t nat -A PREROUTING -p tcp -m multiport --dports $ssh_port -j REDIRECT --to-ports 22
echo "iptables -t nat -A PREROUTING -p tcp -m multiport --dports $ssh_port -j REDIRECT --to-ports 22 #启用外网访问SSH服务" >> /etc/firewall.user
echo -----------------------------------------------
echo -e "已开启外网访问SSH功能"
else
sed -i "/启用外网访问SSH服务/d" /etc/firewall.user
echo -----------------------------------------------
echo -e "已禁止外网访问SSH"
fi
else
errornum
fi
}
#获取设置默认显示
[ -n "$(cat /etc/crontabs/root 2>1| grep otapredownload)" ] && mi_update=禁用 || mi_update=启用
#
echo -----------------------------------------------
echo -e "\033[30;47m欢迎使用其他工具菜单\033[0m"
echo -e "\033[33m本页工具可能无法兼容全部Linux设备请酌情使用\033[0m"
echo -----------------------------------------------
echo -e " 1 ShellClash测试菜单"
[ -f "/etc/firewall.user" ] && echo -e " 2 \033[32m配置\033[0m外网访问SSH"
#echo -e " 3 配置DDNS服务: \033[36m$ipv6_support\033[0m ————待施工"
[ -x /usr/sbin/otapredownload ] && echo -e " 3 \033[33m$mi_update\033[0m小米系统自动更新"
#[ -w "/etc/config/firewall" ] && echo -e " 4 \033[32修复\033[0mRedir_host模式Netflix访问"
echo -----------------------------------------------
echo -e " 0 返回上级菜单 \033[0m"
echo -----------------------------------------------
read -p "请输入对应数字 > " num
if [ -z "$num" ]; then
errornum
elif [ "$num" = 0 ]; then
i=
elif [ "$num" = 1 ]; then
source $clashdir/getdate.sh && testcommand
elif [ "$num" = 2 ]; then
ssh_tools
sleep 1
tools
elif [ -x /usr/sbin/otapredownload ] && [ "$num" = 3 ]; then
[ "$mi_update" = "禁用" ] && sed -i "/otapredownload/d" /etc/crontabs/root || echo "15 3,4,5 * * * /usr/sbin/otapredownload >/dev/null 2>&1" >> /etc/crontabs/root
echo -----------------------------------------------
echo -e "已\033[33m$mi_update\033[0m小米路由器的自动启动如未生效请在官方APP中同步设置"
sleep 1
tools
elif [ "$num" = 4 ]; then
sed -i "s/drop_invalid\ \'1\'/drop_invalid\ \'0\'/g" /etc/config/firewall
echo -----------------------------------------------
read -P "已修复,是否立即重启设备使其生效?(1/0) > " res
[ "$res" = 1 ] && reboot
sleep 1
tools
else else
errornum errornum
fi fi
} }
clashcron(){ clashcron(){
croncmd(){
if [ -n "$(crontab -h 2>&1 | grep '\-l')" ];then
crontab $1
else
crondir="$(crond -h 2>&1 | grep -oE 'Default:.*' | awk -F ":" '{print $2}')"
[ ! -w "$crondir" ] && crondir="/etc/storage/cron/crontabs"
[ ! -w "$crondir" ] && crondir="/var/spool/cron/crontabs"
[ ! -w "$crondir" ] && crondir="/var/spool/cron"
[ ! -w "$crondir" ] && echo "你的设备不支持定时任务配置,脚本大量功能无法启用,请前往 https://t.me/clashfm 申请适配!"
[ "$1" = "-l" ] && cat $crondir/$USER 2>/dev/null
[ -f "$1" ] && cat $1 > $crondir/$USER
fi
}
setcron(){ setcron(){
setcrontab(){ setcrontab(){
#设置具体时间 #设置具体时间
@@ -935,10 +1118,14 @@ clashcron(){
read -p "是否确认添加定时任务?(1/0) > " res read -p "是否确认添加定时任务?(1/0) > " res
if [ "$res" = '1' ]; then if [ "$res" = '1' ]; then
cronwords="$min $hour * * $week $cronset >/dev/null 2>&1 #$week1的$hour点$min分$cronname" cronwords="$min $hour * * $week $cronset >/dev/null 2>&1 #$week1的$hour点$min分$cronname"
crontab -l > /tmp/conf tmpcron=/tmp/cron_$USER
sed -i "/$cronname/d" /tmp/conf croncmd -l > $tmpcron
echo "$cronwords" >> /tmp/conf && crontab /tmp/conf sed -i "/$cronname/d" $tmpcron
rm -f /tmp/conf sed -i '/^$/d' $tmpcron
echo "$cronwords" >> $tmpcron
croncmd $tmpcron
#华硕/Padavan固件存档在本地,其他则删除
[ "$clashdir" = "/jffs/clash" -o "$clashdir" = "/etc/storage/clash" ] && mv -f $tmpcron $clashdir/cron || rm -f $tmpcron
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m定时任务已添加\033[0m" echo -e "\033[31m定时任务已添加\033[0m"
fi fi
@@ -961,7 +1148,8 @@ clashcron(){
elif [ "$num" = 0 ]; then elif [ "$num" = 0 ]; then
i= i=
elif [ "$num" = 9 ]; then elif [ "$num" = 9 ]; then
crontab -l > /tmp/conf && sed -i "/$cronname/d" /tmp/conf && crontab /tmp/conf croncmd -l > /tmp/conf && sed -i "/$cronname/d" /tmp/conf && croncmd /tmp/conf
sed -i "/$cronname/d" $clashdir/cron 2>/dev/null
rm -f /tmp/conf rm -f /tmp/conf
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m定时任务$cronname已删除\033[0m" echo -e "\033[31m定时任务$cronname已删除\033[0m"
@@ -983,7 +1171,7 @@ clashcron(){
echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m" echo -e "\033[44m 实验性功能遇问题请加TG群反馈\033[42;30m t.me/clashfm \033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[33m已添加的定时任务\033[36m" echo -e "\033[33m已添加的定时任务\033[36m"
crontab -l | grep -oE ' #.*' croncmd -l | grep -oE ' #.*'
echo -e "\033[0m"----------------------------------------------- echo -e "\033[0m"-----------------------------------------------
echo -e " 1 设置\033[33m定时重启\033[0mclash服务" echo -e " 1 设置\033[33m定时重启\033[0mclash服务"
echo -e " 2 设置\033[31m定时停止\033[0mclash服务" echo -e " 2 设置\033[31m定时停止\033[0mclash服务"
@@ -1032,7 +1220,7 @@ clashsh(){
echo -e " 5 设置\033[33m定时任务\033[0m$cronoff" echo -e " 5 设置\033[33m定时任务\033[0m$cronoff"
echo -e " 6 导入\033[32m配置文件\033[0m" echo -e " 6 导入\033[32m配置文件\033[0m"
echo -e " 7 clash\033[31m进阶设置\033[0m" echo -e " 7 clash\033[31m进阶设置\033[0m"
echo -e " 8 \033[35m测试菜单\033[0m" echo -e " 8 \033[35m其他工具\033[0m"
echo -e " 9 \033[36m更新/卸载\033[0m" echo -e " 9 \033[36m更新/卸载\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 0 \033[0m退出脚本\033[0m" echo -e " 0 \033[0m退出脚本\033[0m"
@@ -1069,6 +1257,7 @@ clashsh(){
localproxy localproxy
elif [ "$autostart" = "enable_rc" ]; then elif [ "$autostart" = "enable_rc" ]; then
/etc/init.d/clash disable /etc/init.d/clash disable
cd /etc/rc.d && rm -rf *clash > /dev/null 2>&1 && cd - >/dev/null
echo -e "\033[33m已禁止Clash开机启动\033[0m" echo -e "\033[33m已禁止Clash开机启动\033[0m"
elif [ "$autostart" = "disable_rc" ]; then elif [ "$autostart" = "disable_rc" ]; then
/etc/init.d/clash enable /etc/init.d/clash enable
@@ -1102,7 +1291,8 @@ clashsh(){
clashsh clashsh
elif [ "$num" = 8 ]; then elif [ "$num" = 8 ]; then
source $clashdir/getdate.sh && testcommand tools
clashsh
elif [ "$num" = 9 ]; then elif [ "$num" = 9 ]; then
checkcfg=$(cat $ccfg) checkcfg=$(cat $ccfg)
@@ -1128,6 +1318,7 @@ case "$1" in
echo ----------------------------------------- echo -----------------------------------------
echo " -t 测试模式" echo " -t 测试模式"
echo " -h 帮助列表" echo " -h 帮助列表"
echo " -u 卸载脚本"
echo ----------------------------------------- echo -----------------------------------------
echo "在线求助t.me/clashfm" echo "在线求助t.me/clashfm"
echo "官方博客juewuy.github.io" echo "官方博客juewuy.github.io"
@@ -1138,8 +1329,37 @@ case "$1" in
shtype=sh && [ -n "$(ls -l /bin/sh|grep -o dash)" ] && shtype=bash shtype=sh && [ -n "$(ls -l /bin/sh|grep -o dash)" ] && shtype=bash
$shtype -x $clashdir/clash.sh $shtype -x $clashdir/clash.sh
;; ;;
-u)
read -p "确认卸载ShellClash警告该操作不可逆[1/0] " res
if [ "$res" = '1' ]; then
$clashdir/start.sh stop
$clashdir/start.sh cronset "clash服务"
$clashdir/start.sh cronset "订阅链接"
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
sed -i '/alias clash=*/'d $profile
sed -i '/export clashdir=*/'d $profile
sed -i '/all_proxy/'d $profile
sed -i '/ALL_PROXY/'d $profile
sed -i "/启用外网访问SSH服务/d" /etc/firewall.user
sed -i '/ShellClash初始化/'d /etc/storage/started_script.sh 2>/dev/null
sed -i '/ShellClash初始化/'d /jffs/.asusrouter 2>/dev/null
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
sed -Ei s/0:7890/7890:7890/g /etc/passwd
userdel -r shellclash 2>/dev/null
echo -----------------------------------------------
echo -e "\033[36m已卸载ShellClash相关文件有缘再会\033[0m"
echo -e "\033[33m请手动关闭当前窗口以重置环境变量\033[0m"
echo -----------------------------------------------
exit
fi
echo -e "\033[31m操作已取消\033[0m"
;;
*) *)
echo " -t 测试模式" $0 -h
echo " -h 帮助列表"
;; ;;
esac esac

View File

@@ -1,6 +1,6 @@
#!/bin/sh /etc/rc.common #!/bin/sh /etc/rc.common
START=92 START=99
SERVICE_DAEMONIZE=1 SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1 SERVICE_WRITE_PID=1

View File

@@ -1,32 +1,6 @@
#!/bin/bash #!/bin/bash
# Copyright (C) Juewuy # Copyright (C) Juewuy
webget(){
[ -n "$(pidof clash)" ] && export all_proxy="http://$authentication@127.0.0.1:$mix_port" #设置临时http代理
#参数【$1】代表下载目录【$2】代表在线地址
#参数【$3】代表输出显示【$4】不启用重定向
#参数【$5】代表验证证书
if curl --version > /dev/null 2>&1;then
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
[ "$4" = "rediroff" ] && redirect='' || redirect='-L'
[ "$5" = "skipceroff" ] && certificate='' || certificate='-k'
result=$(curl -w %{http_code} --connect-timeout 3 $progress $redirect $certificate -o $1 $2)
[ "$result" != "200" ] && export all_proxy="" && result=$(curl -w %{http_code} --connect-timeout 3 $progress $redirect $certificate -o $1 $2)
else
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$3" = "echoon" ] && progress=''
[ "$4" = "rediroff" ] && redirect='--max-redirect=0' || redirect=''
[ "$5" = "skipceroff" ] && certificate='' || certificate='--no-check-certificate'
wget -Y on $progress $redirect $certificate --timeout=3 -O $1 $2
if [ "$?" != "0" ];then
wget $progress $redirect $certificate --timeout=3 -O $1 $2
[ "$?" = "0" ] && result="200"
else
result="200"
fi
fi
export all_proxy=""
}
#导入订阅、配置文件相关 #导入订阅、配置文件相关
linkconfig(){ linkconfig(){
echo ----------------------------------------------- echo -----------------------------------------------
@@ -45,14 +19,17 @@ linkconfig(){
echo 12 基础规则-仅Geoip CN+Final echo 12 基础规则-仅Geoip CN+Final
echo 13 网易云解锁-仅规则分组 echo 13 网易云解锁-仅规则分组
echo 14 ACL4SSR重度全分组+谷歌优化 echo 14 ACL4SSR重度全分组+谷歌优化
echo 15 ACL4SSR通用版+LM-Firefly游戏规则
echo 16 ACL4SSR精简版+LM-Firefly游戏规则
echo 17 ACL4SSR重度+LM-Firefly游戏规则
echo ----------------------------------------------- echo -----------------------------------------------
echo 0 返回上级菜单 echo 0 返回上级菜单
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ] || [ "$num" -gt 14 ];then if [ -z "$num" ] || [ "$num" -gt 17 ];then
errornum errornum
elif [ "$num" = 0 ];then elif [ "$num" = 0 ];then
echo echo
elif [ "$num" -le 14 ];then elif [ "$num" -le 17 ];then
#将对应标记值写入mark #将对应标记值写入mark
rule_link=$num rule_link=$num
setconfig rule_link $rule_link setconfig rule_link $rule_link
@@ -65,10 +42,10 @@ linkserver(){
echo -e "\033[36m以下为互联网采集的第三方服务器具体安全性请自行斟酌\033[0m" echo -e "\033[36m以下为互联网采集的第三方服务器具体安全性请自行斟酌\033[0m"
echo 当前使用后端为:$server_link echo 当前使用后端为:$server_link
echo 1 subcon.dlj.tf echo 1 subcon.dlj.tf
echo 2 subconverter.herokuapp.com echo 2 api.dler.io
echo 3 subconverter-web.now.sh echo 3 api.wcc.best
echo 4 api.dler.io echo 4 api2.tsutsu.cc
echo 5 api.wcc.best echo 5 api.v1.mk
echo ----------------------------------------------- echo -----------------------------------------------
echo 0 返回上级菜单 echo 0 返回上级菜单
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -217,7 +194,7 @@ getlink2(){
read -p "请输入完整链接 > " link read -p "请输入完整链接 > " link
test=$(echo $link | grep -iE "tp.*://" ) test=$(echo $link | grep -iE "tp.*://" )
link=`echo ${link/\ \(*\)/''}` #删除恶心的超链接内容 link=`echo ${link/\ \(*\)/''}` #删除恶心的超链接内容
link=`echo ${link//\&/\\\&}` #分隔符 & 添加转义 link=`echo ${link//\&/\%26}` #分隔符 & 替换成urlcode%26
if [ -n "$link" -a -n "$test" ];then if [ -n "$link" -a -n "$test" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e 请检查输入的链接是否正确: echo -e 请检查输入的链接是否正确:
@@ -276,11 +253,9 @@ clashlink(){
fi fi
fi fi
getlink getlink
clashlink
elif [ "$num" = 2 ];then elif [ "$num" = 2 ];then
getlink2 getlink2
clashlink
elif [ "$num" = 3 ];then elif [ "$num" = 3 ];then
yamlbak=$yaml.bak yamlbak=$yaml.bak
@@ -325,16 +300,15 @@ clashlink(){
elif [ "$num" = 5 ];then elif [ "$num" = 5 ];then
clashcron clashcron
clashlink
else else
errornum errornum
clashlink
fi fi
} }
#下载更新相关 #下载更新相关
gettar(){ gettar(){
webget /tmp/clashfm.tar.gz $tarurl $clashdir/start.sh webget /tmp/clashfm.tar.gz $tarurl
[ "$result" != "200" ] && echo "文件下载失败!" && exit 1 [ "$?" = "1" ] && echo "文件下载失败!" && exit 1
$clashdir/start.sh stop
#解压 #解压
echo ----------------------------------------------- echo -----------------------------------------------
echo 开始解压文件! echo 开始解压文件!
@@ -363,12 +337,14 @@ gettar(){
fi fi
fi fi
#修饰文件及版本号 #修饰文件及版本号
shtype=sh && [ -n "$(ls -l /bin/sh|grep -o dash)" ] && shtype=bash shtype=sh && [ -n "$(ls -l /bin/sh|grep -oE 'dash|show|bash')" ] && shtype=bash
sed -i "s|/bin/sh|/bin/$shtype|" $clashdir/start.sh sed -i "s|/bin/sh|/bin/$shtype|" $clashdir/start.sh
chmod 777 $clashdir/start.sh chmod 777 $clashdir/start.sh
sed -i '/versionsh_l=*/'d $clashdir/mark sed -i '/versionsh_l=*/'d $clashdir/mark
echo versionsh_l=$release_new >> $clashdir/mark echo versionsh_l=$release_new >> $clashdir/mark
#设置环境变量 #设置环境变量
[ -w /opt/etc/profile ] && profile=/opt/etc/profile
[ -w /jffs/configs/profile.add ] && profile=/jffs/configs/profile.add
[ -w ~/.bashrc ] && profile=~/.bashrc [ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile [ -w /etc/profile ] && profile=/etc/profile
if [ -n "$profile" ];then if [ -n "$profile" ];then
@@ -380,6 +356,8 @@ gettar(){
echo 无法写入环境变量!请检查安装权限! echo 无法写入环境变量!请检查安装权限!
exit 1 exit 1
fi fi
#华硕/Padavan额外设置
[ -n "$systype" ] && sed -i '/ShellClash初始化/'d $initdir && echo "$clashdir/start.sh init #ShellClash初始化脚本" >> $initdir
#删除临时文件 #删除临时文件
rm -rf /tmp/clashfm.tar.gz rm -rf /tmp/clashfm.tar.gz
rm -rf $clashdir/clashservice rm -rf $clashdir/clashservice
@@ -389,6 +367,7 @@ getsh(){
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "当前脚本版本为:\033[33m $versionsh_l \033[0m" echo -e "当前脚本版本为:\033[33m $versionsh_l \033[0m"
echo -e "最新脚本版本为:\033[32m $release_new \033[0m" echo -e "最新脚本版本为:\033[32m $release_new \033[0m"
echo -e "注意更新时会停止clash服务"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "是否更新脚本?[1/0] > " res read -p "是否更新脚本?[1/0] > " res
if [ "$res" = '1' ]; then if [ "$res" = '1' ]; then
@@ -443,8 +422,8 @@ getcore(){
#获取在线clash核心文件 #获取在线clash核心文件
echo ----------------------------------------------- echo -----------------------------------------------
echo 正在在线获取clash核心文件…… echo 正在在线获取clash核心文件……
webget /tmp/clash.new $corelink $clashdir/start.sh webget /tmp/clash.new $corelink
if [ "$result" != "200" ];then if [ "$?" = "1" ];then
echo -e "\033[31m核心文件下载失败\033[0m" echo -e "\033[31m核心文件下载失败\033[0m"
else else
echo -e "\033[32m$clashcore核心下载成功\033[0m" echo -e "\033[32m$clashcore核心下载成功\033[0m"
@@ -470,7 +449,10 @@ setcore(){
echo "2 clashpre 支持Tun模式、混合模式" echo "2 clashpre 支持Tun模式、混合模式"
echo "(高级预览版) 内存占用更高" echo "(高级预览版) 内存占用更高"
echo echo
echo "3 手动指定处理器架构" echo "3 clash.net 支持vless/xtls"
echo "(.net定制版) 未测试,可能不稳定"
echo
echo "4 手动指定处理器架构"
echo ----------------------------------------------- echo -----------------------------------------------
echo 0 返回上级菜单 echo 0 返回上级菜单
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -487,6 +469,10 @@ setcore(){
version=$clashpre_v version=$clashpre_v
getcore getcore
elif [ "$num" = 3 ]; then elif [ "$num" = 3 ]; then
clashcore=clash.net
version=$clashnet_v
getcore
elif [ "$num" = 4 ]; then
setcpucore setcpucore
setcore setcore
else else
@@ -497,15 +483,15 @@ setcore(){
getgeo(){ getgeo(){
echo ----------------------------------------------- echo -----------------------------------------------
echo 正在从服务器获取数据库文件………… echo 正在从服务器获取数据库文件…………
webget /tmp/Country.mmdb $update_url/bin/$geotype $clashdir/start.sh webget /tmp/$geoname $update_url/bin/$geotype
if [ "$result" != "200" ];then if [ "$?" = "1" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m文件下载失败\033[0m" echo -e "\033[31m文件下载失败\033[0m"
exit 1 exit 1
else else
mv -f /tmp/Country.mmdb $bindir/Country.mmdb mv -f /tmp/$geoname $bindir/$geoname
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[32mGeoIP数据库文件下载成功\033[0m" echo -e "\033[32mGeoIP/CN_IP数据库文件下载成功!\033[0m"
Geo_v=$GeoIP_v Geo_v=$GeoIP_v
setconfig Geo_v $GeoIP_v setconfig Geo_v $GeoIP_v
setconfig geotype $geotype setconfig geotype $geotype
@@ -515,19 +501,32 @@ setgeo(){
echo ----------------------------------------------- echo -----------------------------------------------
[ "$geotype" = "Country.mmdb" ] && geo_type=全球版 || geo_type=精简版 [ "$geotype" = "Country.mmdb" ] && geo_type=全球版 || geo_type=精简版
[ -n "$geo_type" ] && echo -e "当前使用的是\033[47;30m$geo_type数据库\033[0m" [ -n "$geo_type" ] && echo -e "当前使用的是\033[47;30m$geo_type数据库\033[0m"
echo -e "\033[36m请选择需要更新的GeoIP数据库\033[0m" echo -e "\033[36m请选择需要更新/切换的GeoIP/CN_IP数据库:\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 由\033[32malecthw\033[0m提供的全球版GeoIP数据库(约4mb)" echo -e " 1 由\033[32malecthw\033[0m提供的全球版GeoIP数据库(约4mb)"
echo -e " 2 由\033[32mHackl0us\033[0m提供的精简版CN-IP数据库(约0.1mb)" echo -e " 2 由\033[32mHackl0us\033[0m提供的精简版CN-IP数据库(约0.1mb)"
echo -e " 3 由\033[32m17mon\033[0m提供的CN-IP文件(需启用CN_IP绕过内核功能约0.1mb)"
echo " 0 返回上级菜单" echo " 0 返回上级菜单"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ "$num" = '1' ]; then if [ "$num" = '1' ]; then
geotype=Country.mmdb geotype=Country.mmdb
geoname=Country.mmdb
getgeo getgeo
elif [ "$num" = '2' ]; then elif [ "$num" = '2' ]; then
geotype=cn_mini.mmdb geotype=cn_mini.mmdb
geoname=Country.mmdb
getgeo getgeo
elif [ "$num" = '3' ]; then
if [ "$cn_ip_route" = "已开启" ]; then
geotype=china_ip_list.txt
geoname=cn_ip.txt
getgeo
else
echo -----------------------------------------------
echo -e "\033[31m未开启绕过内核功能无需更新CN-IP文件\033[0m"
sleep 1
fi
else else
update update
fi fi
@@ -547,8 +546,8 @@ getdb(){
dblink="${update_url}/bin/${db_type}.tar.gz" dblink="${update_url}/bin/${db_type}.tar.gz"
echo ----------------------------------------------- echo -----------------------------------------------
echo 正在连接服务器获取安装文件………… echo 正在连接服务器获取安装文件…………
webget /tmp/clashdb.tar.gz $dblink $clashdir/start.sh webget /tmp/clashdb.tar.gz $dblink
if [ "$result" != "200" ];then if [ "$?" = "1" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m文件下载失败\033[0m" echo -e "\033[31m文件下载失败\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
@@ -644,13 +643,19 @@ getcrt(){
crtlink="${update_url}/bin/ca-certificates.crt" crtlink="${update_url}/bin/ca-certificates.crt"
echo ----------------------------------------------- echo -----------------------------------------------
echo 正在连接服务器获取安装文件………… echo 正在连接服务器获取安装文件…………
webget /tmp/ca-certificates.crt $crtlink $clashdir/start.sh webget /tmp/ca-certificates.crt $crtlink
if [ "$result" != "200" ];then if [ "$?" = "1" ];then
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m文件下载失败\033[0m" echo -e "\033[31m文件下载失败\033[0m"
else else
echo ----------------------------------------------- echo -----------------------------------------------
mv -f /tmp/ca-certificates.crt $crtdir mv -f /tmp/ca-certificates.crt $crtdir
$clashdir/start.sh webget /tmp/ssl_test https://baidu.com echooff rediron skipceroff
if [ "$?" = "1" ];then
export CURL_CA_BUNDLE=$crtdir
echo "export CURL_CA_BUNDLE=$crtdir" >> /etc/profile
fi
rm -rf /tmp/ssl_test
echo -e "\033[32m证书安装成功\033[0m" echo -e "\033[32m证书安装成功\033[0m"
sleep 1 sleep 1
fi fi
@@ -691,27 +696,31 @@ setserver(){
release_new="" release_new=""
} }
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[30;47m您可以在此处切换在线更新时使用的资源地址\033[0m" echo -e "\033[30;47m切换ShellClash版本及更新源地址\033[0m"
echo -e "当前源:\033[4;32m$update_url\033[0m" echo -e "当前源地址\033[4;32m$update_url\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 Jsdelivr-CDN源(test版本)" echo -e " 1 \033[32m正式版\033[0m&Jsdelivr-CDN源(推荐)"
echo -e " 2 Jsdelivr-CDN源(release版本)" echo -e " 2 \033[36m测试版\033[0m&Jsdelivr-CDN源"
echo -e " 3 Github源(test版本需开启clash服务)" echo -e " 3 \033[36m测试版\033[0m&Github源(需开启clash服务"
echo -e " 5 自定义输入(请务必确保路径正确)" [ -z "$(curl -V 2>/dev/null)" ] && [ -n "$(wget -V 2>&1 | grep BusyBox)" ] && echo -e " 4 \033[33mHttp专用源\033[0m@Qust.me(感谢\033[32m酱紫表\033[0m提供及维护)"
echo -e " 6 切换版本(仅支持切换至release分支)" echo -e " 5 自定义源地址(用于本地源或自建源)"
echo -e " 6 \033[31m版本回退\033[0m"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ]; then if [ -z "$num" ]; then
errornum errornum
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master' update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash'
saveserver saveserver
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash' update_url='https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master'
saveserver saveserver
elif [ "$num" = 3 ]; then elif [ "$num" = 3 ]; then
update_url='https://raw.githubusercontent.com/juewuy/ShellClash/master' update_url='https://raw.githubusercontent.com/juewuy/ShellClash/master'
saveserver saveserver
elif [ "$num" = 4 ]; then
update_url='http://sc.qust.me'
saveserver
elif [ "$num" = 5 ]; then elif [ "$num" = 5 ]; then
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入个人源路径 > " update_url read -p "请输入个人源路径 > " update_url
@@ -723,8 +732,8 @@ setserver(){
fi fi
elif [ "$num" = 6 ]; then elif [ "$num" = 6 ]; then
echo ----------------------------------------------- echo -----------------------------------------------
webget /tmp/clashrelease https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/bin/release_version echooff rediroff 2>/tmp/clashrelease $clashdir/start.sh webget /tmp/clashrelease https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/bin/release_version echooff rediroff 2>/tmp/clashrelease
echo -e "\033[32m请选择想要更新至的版本:\033[0m" echo -e "\033[31m请选择想要回退至的release版本:\033[0m"
cat /tmp/clashrelease | awk '{print " "NR" "$1}' cat /tmp/clashrelease | awk '{print " "NR" "$1}'
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -740,7 +749,7 @@ setserver(){
fi fi
elif [ "$num" = 9 ]; then elif [ "$num" = 9 ]; then
update_url='http://192.168.31.31:8080/ShellClash' update_url='http://192.168.123.90:8080/ShellClash'
else else
errornum errornum
fi fi
@@ -748,16 +757,14 @@ setserver(){
checkupdate(){ checkupdate(){
if [ -z "$release_new" ];then if [ -z "$release_new" ];then
if [ "$update_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ];then if [ "$update_url" = "https://cdn.jsdelivr.net/gh/juewuy/ShellClash" ];then
webget /tmp/clashrelease $update_url@master/bin/release_version echoon rediroff 2>/tmp/clashrelease $clashdir/start.sh webget /tmp/clashversion $update_url@master/bin/release_version echoon rediroff 2>/tmp/clashrelease
[ "$result" = "200" ] && release_new=$(cat /tmp/clashrelease | head -1) [ "$?" = "0" ] && release_new=$(cat /tmp/clashversion | head -1)
[ -z "$release_new" ] && release_new=master
update_url=$update_url@$release_new update_url=$update_url@$release_new
fi fi
webget /tmp/clashversion $update_url/bin/version echooff $clashdir/start.sh webget /tmp/clashversion $update_url/bin/version echooff
[ "$result" = "200" ] && source /tmp/clashversion || echo -e "\033[31m检查更新失败请检查网络连接或切换安装源\033[0m" [ "$?" = "0" ] && release_new=$(cat /tmp/clashversion | grep versionsh | awk -F'=' '{ print $2 }')
[ -z "$release_new" ] && release_new=$versionsh [ -n "$release_new" ] &&source /tmp/clashversion || echo -e "\033[31m检查更新失败请检查网络连接或切换安装源\033[0m"
rm -rf /tmp/clashversion rm -rf /tmp/clashversion
rm -rf /tmp/clashrelease
fi fi
} }
update(){ update(){
@@ -765,18 +772,20 @@ update(){
echo -ne "\033[32m正在检查更新\033[0m\r" echo -ne "\033[32m正在检查更新\033[0m\r"
checkupdate checkupdate
[ "$clashcore" = "clash" ] && clash_n=$clash_v || clash_n=$clashpre_v [ "$clashcore" = "clash" ] && clash_n=$clash_v || clash_n=$clashpre_v
[ "$clashcore" = "clashpre" ] && clash_n=$clashpre_v
[ "$clashcore" = "clash.net" ] && clash_n=$clashnet_v
clash_v=$($bindir/clash -v 2>/dev/null | awk '{print $2}') clash_v=$($bindir/clash -v 2>/dev/null | awk '{print $2}')
[ -z "$clash_v" ] && clash_v=$clashv [ -z "$clash_v" ] && clash_v=$clashv
echo -e "\033[30;47m欢迎使用更新功能\033[0m" echo -e "\033[30;47m欢迎使用更新功能\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$versionsh\033[0m" echo -e " 1 更新\033[36m管理脚本 \033[33m$versionsh_l\033[0m > \033[32m$versionsh\033[0m"
echo -e " 2 切换\033[33mclash核心 \033[33m$clash_v\033[0m > \033[32m$clash_n\033[0m" echo -e " 2 切换\033[33mclash核心 \033[33m$clash_v\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 " 3 更新\033[32mGeoIP/CN-IP \033[33m$Geo_v\033[0m > \033[32m$GeoIP_v\033[0m"
echo -e " 4 安装本地\033[35mDashboard\033[0m面板" echo -e " 4 安装本地\033[35mDashboard\033[0m面板"
echo -e " 5 安装/更新本地\033[33m根证书文件\033[0m" echo -e " 5 安装/更新本地\033[33m根证书文件\033[0m"
echo -e " 6 查看\033[32mPAC\033[0m自动代理配置" echo -e " 6 查看\033[32mPAC\033[0m自动代理配置"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 7 切换\033[36m安装源\033[0m地址" echo -e " 7 切换\033[36m安装源\033[0m及\033[36m安装版本\033[0m"
echo -e " 8 鸣谢" echo -e " 8 鸣谢"
echo -e " 9 \033[31m卸载\033[34mShellClash\033[0m" echo -e " 9 \033[31m卸载\033[34mShellClash\033[0m"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
@@ -821,35 +830,15 @@ update(){
echo -e "感谢:\033[32mClash \033[0m作者\033[36m Dreamacro\033[0m 项目地址:\033[32mhttps://github.com/Dreamacro/clash\033[0m" 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[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[32malecthw提供的GeoIP数据库\033[0m 项目地址:\033[32mhttps://github.com/alecthw/mmdb_china_ip_list\033[0m"
echo -e "感谢:\033[32mHackl0us提供的GeoIP精简数据库\033[0m 项目地址:\033[32mhttps://github.com/Hackl0us/GeoIP2-CN\033[0m"
echo -e "感谢:\033[32m17mon提供的CN-IP列表\033[0m 项目地址:\033[32mhttps://github.com/17mon/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[32myacd \033[0m作者\033[36m haishanh\033[0m 项目地址:\033[32mhttps://github.com/haishanh/yacd\033[0m"
echo -e "感谢:\033[32m更多的帮助过我的人\033[0m" echo -e "感谢:\033[32m更多的帮助过我的人\033[0m"
sleep 2 sleep 2
update update
elif [ "$num" = 9 ]; then elif [ "$num" = 9 ]; then
read -p "确认卸载ShellClash警告该操作不可逆[1/0] " res $0 -u
if [ "$res" = '1' ]; then
$clashdir/start.sh stop
$clashdir/start.sh cronset "clash服务"
$clashdir/start.sh cronset "订阅链接"
[ -w ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile
sed -i '/alias clash=*/'d $profile
sed -i '/export clashdir=*/'d $profile
sed -i '/all_proxy/'d $profile
sed -i '/ALL_PROXY/'d $profile
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
echo -----------------------------------------------
echo -e "\033[36m已卸载ShellClash相关文件有缘再会\033[0m"
echo -e "\033[33m请手动关闭当前窗口以重置环境变量\033[0m"
echo -----------------------------------------------
exit
fi
echo -e "\033[31m操作已取消\033[0m"
update update
else else
errornum errornum
@@ -861,8 +850,8 @@ userguide(){
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[33m是否需要代理UDP流量(主要用于游戏) \033[0m" echo -e "\033[33m是否需要代理UDP流量(主要用于游戏) \033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 \033[33m不代理UDP流量\033[0m(可能会导致一部分游戏/应用无法连接)" echo -e " 1 \033[33m不代理UDP流量\033[0m(可能会导致一部分外服游戏/应用无法连接)"
modinfo tun >/dev/null 2>&1 && [ "$?" = 0 ] && \ ip tuntap >/dev/null 2>&1 && [ "$?" = 0 ] && \
echo -e " 2 \033[32m使用Tun虚拟网卡\033[0m代理UDP流量(更低的延迟但更多的CPU消耗)" || \ echo -e " 2 \033[32m使用Tun虚拟网卡\033[0m代理UDP流量(更低的延迟但更多的CPU消耗)" || \
echo -e " - \033[0m使用Tun模式(你的设备不支持此模式,如为虚拟机运行请调整虚拟网卡设置)\033[0m" echo -e " - \033[0m使用Tun模式(你的设备不支持此模式,如为虚拟机运行请调整虚拟网卡设置)\033[0m"
[ -n "$(iptables -j TPROXY 2>&1 | grep 'on-port')" ] && \ [ -n "$(iptables -j TPROXY 2>&1 | grep 'on-port')" ] && \
@@ -891,10 +880,9 @@ userguide(){
echo -e "\033[33m请先选择你的使用环境 \033[0m" echo -e "\033[33m请先选择你的使用环境 \033[0m"
echo -e "\033[0m(你之后依然可以在设置中更改各种配置)\033[0m" echo -e "\033[0m(你之后依然可以在设置中更改各种配置)\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 \033[32m各类路由设备\033[0m配置局域网透明路由" echo -e " 1 \033[32m主路由或旁路由\033[0m"
echo -e " 2 \033[36m桌面版Linux系统\033[0m,仅配置本机路由" echo -e " 2 \033[36mLinux本机代理\033[0m"
echo -e " 3 \033[32m服务器Linux系统\033[0m仅配置本机路由" [ -f "$ccfg.bak" ] && echo -e " 3 \033[33m还原之前备份的设置\033[0m"
echo -e " 4 \033[36m多功能设备\033[0m配置本机及局域网路由"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ] || [ "$num" -gt 4 ];then if [ -z "$num" ] || [ "$num" -gt 4 ];then
@@ -902,14 +890,37 @@ userguide(){
forwhat forwhat
elif [ "$num" = 1 ];then elif [ "$num" = 1 ];then
whichmod whichmod
elif [ "$num" = 2 -o "$num" = 3 ];then #检测IP转发
if [ "$(cat /proc/sys/net/ipv4/ip_forward)" = "0" ];then
echo -----------------------------------------------
echo -e "\033[33m检测到你的设备尚未开启ip转发局域网设备将无法正常连接网络是否立即开启\033[0m"
read -p "是否开启?(1/0) > " res
[ "$res" = 1 ] && echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[ "$?" = 0 ] && /etc/init.d/procps restart && echo "已成功开启ipv4转发如未正常开启请手动重启设备" || echo "开启失败!请自行谷歌查找当前设备的开启方法!"
fi
elif [ "$num" = 2 ];then
setconfig redir_mod "纯净模式" setconfig redir_mod "纯净模式"
setconfig clashcore "clash" setconfig clashcore "clash"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[36m请选择设置本机代理的方式\033[0m" echo -e "\033[36m请选择设置本机代理的方式\033[0m"
localproxy echo -e " 1 使用\033[32m环境变量\033[0m方式配置(不支持部分应用)"
elif [ "$num" = 4 ];then echo -e " 2 使用\033[32miptables增强模式\033[0m配置(不支持OpenWrt)"
whichmod echo -e " 0 稍后设置"
read -p "请输入对应数字 > " num
if [ "$num" = 1 ]; then
local_proxy=已开启
local_type=环境变量
elif [ "$num" = 2 ]; then
local_proxy=已开启
local_type=iptables增强模式
fi
setconfig local_proxy $local_proxy
setconfig local_type $local_type
elif [ "$num" = 3 ];then
mv -f $ccfg.bak $ccfg
echo -e "\033[32m脚本设置已还原\033[0m"
echo -e "\033[33m请重新启动脚本\033[0m"
exit 0
fi fi
} }
forwhat forwhat
@@ -939,8 +950,8 @@ userguide(){
[ "$res" = 1 ] && checkupdate && getcrt [ "$res" = 1 ] && checkupdate && getcrt
fi fi
#设置加密DNS #设置加密DNS
webget /tmp/ssl_test https://baidu.com echooff rediron skipceroff $clashdir/start.sh webget /tmp/ssl_test https://www.baidu.com echooff rediron skipceroff
if [ "$result" = "200" ];then if [ "$?" = "0" ];then
dns_nameserver='https://223.5.5.5/dns-query, https://doh.pub/dns-query, tls://dns.rubyfish.cn:853' dns_nameserver='https://223.5.5.5/dns-query, https://doh.pub/dns-query, tls://dns.rubyfish.cn:853'
dns_fallback='https://1.0.0.1/dns-query, https://8.8.4.4/dns-query, https://doh.opendns.com/dns-query' dns_fallback='https://1.0.0.1/dns-query, https://8.8.4.4/dns-query, https://doh.opendns.com/dns-query'
setconfig dns_nameserver \'"$dns_nameserver"\' setconfig dns_nameserver \'"$dns_nameserver"\'
@@ -989,7 +1000,7 @@ testcommand(){
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
$clashdir/start.sh stop $clashdir/start.sh stop
echo ----------------------------------------------- echo -----------------------------------------------
$clashdir/clash -t -d $clashdir [ -x $clashdir/clash ] && $clashdir/clash -t -d $clashdir
[ "$?" = 0 ] && testover=32m测试通过|| testover=31m出现错误请截图后到TG群询问 [ "$?" = 0 ] && testover=32m测试通过|| testover=31m出现错误请截图后到TG群询问
echo -e "\033[$testover\033[0m" echo -e "\033[$testover\033[0m"
exit; exit;

View File

@@ -4,6 +4,8 @@
#脚本内部工具 #脚本内部工具
getconfig(){ getconfig(){
#加载配置文件 #加载配置文件
[ -d "/etc/storage/clash" ] && clashdir=/etc/storage/clash
[ -d "/jffs/clash" ] && clashdir=/jffs/clash
[ -z "$clashdir" ] && clashdir=$(cat /etc/profile | grep clashdir | awk -F "\"" '{print $2}') [ -z "$clashdir" ] && clashdir=$(cat /etc/profile | grep clashdir | awk -F "\"" '{print $2}')
[ -z "$clashdir" ] && clashdir=$(cat ~/.bashrc | grep clashdir | awk -F "\"" '{print $2}') [ -z "$clashdir" ] && clashdir=$(cat ~/.bashrc | grep clashdir | awk -F "\"" '{print $2}')
ccfg=$clashdir/mark ccfg=$clashdir/mark
@@ -24,9 +26,11 @@ getconfig(){
[ -z "$redir_port" ] && redir_port=7892 [ -z "$redir_port" ] && redir_port=7892
[ -z "$db_port" ] && db_port=9999 [ -z "$db_port" ] && db_port=9999
[ -z "$dns_port" ] && dns_port=1053 [ -z "$dns_port" ] && dns_port=1053
[ -z "$cn_ip_route" ] && cn_ip_route=未开启
[ -z "$public_support" ] && public_support=未开启
[ -z "$dns_nameserver" ] && dns_nameserver='114.114.114.114, 223.5.5.5' [ -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' [ -z "$dns_fallback" ] && dns_fallback='1.0.0.1, 8.8.4.4'
[ -z "$multiport" ] && multiport='53,587,465,995,993,143,80,443' [ -z "$multiport" ] && multiport='22,53,587,465,995,993,143,80,443,8080'
#是否代理常用端口 #是否代理常用端口
[ "$common_ports" = "已开启" ] && ports="-m multiport --dports $multiport" [ "$common_ports" = "已开启" ] && ports="-m multiport --dports $multiport"
} }
@@ -44,45 +48,33 @@ compare(){
[ "$(cat $1)" = "$(cat $2)" ] && return 0 || return 1 [ "$(cat $1)" = "$(cat $2)" ] && return 0 || return 1
fi fi
} }
webget(){
[ -n "$(pidof clash)" ] && export all_proxy="http://$authentication@127.0.0.1:$mix_port" #设置临时http代理
#参数【$1】代表下载目录【$2】代表在线地址
#参数【$3】代表输出显示【$4】不启用重定向
#参数【$5】代表验证证书
if curl --version > /dev/null 2>&1;then
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
[ "$4" = "rediroff" ] && redirect='' || redirect='-L'
[ "$5" = "skipceroff" ] && certificate='' || certificate='-k'
result=$(curl -w %{http_code} --connect-timeout 3 $progress $redirect $certificate -o $1 $2)
[ "$result" != "200" ] && export all_proxy="" && result=$(curl -w %{http_code} --connect-timeout 3 $progress $redirect $certificate -o $1 $2)
else
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$3" = "echoon" ] && progress=''
[ "$4" = "rediroff" ] && redirect='--max-redirect=0' || redirect=''
[ "$5" = "skipceroff" ] && certificate='' || certificate='--no-check-certificate'
wget -Y on $progress $redirect $certificate --timeout=3 -O $1 $2
if [ "$?" != "0" ];then
wget $progress $redirect $certificate --timeout=3 -O $1 $2
[ "$?" = "0" ] && result="200"
else
result="200"
fi
fi
export all_proxy=""
}
logger(){ logger(){
[ -n "$2" ] && echo -e "\033[$2m$1\033[0m" [ -n "$2" ] && echo -e "\033[$2m$1\033[0m"
echo `date "+%G-%m-%d %H:%M:%S"` $1 >> $clashdir/log 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 [ "$(wc -l $clashdir/log | awk '{print $1}')" -gt 30 ] && sed -i '1,5d' $clashdir/log
} }
croncmd(){
if [ -n "$(crontab -h 2>&1 | grep '\-l')" ];then
crontab $1
else
crondir="$(crond -h 2>&1 | grep -oE 'Default:.*' | awk -F ":" '{print $2}')"
[ ! -w "$crondir" ] && crondir="/etc/storage/cron/crontabs"
[ ! -w "$crondir" ] && crondir="/var/spool/cron/crontabs"
[ ! -w "$crondir" ] && crondir="/var/spool/cron"
[ ! -w "$crondir" ] && echo "你的设备不支持定时任务配置,脚本大量功能无法启用,请前往 https://t.me/clashfm 申请适配!"
[ "$1" = "-l" ] && cat $crondir/$USER 2>/dev/null
[ -f "$1" ] && cat $1 > $crondir/$USER
fi
}
cronset(){ cronset(){
# 参数1代表要移除的关键字,参数2代表要添加的任务语句 # 参数1代表要移除的关键字,参数2代表要添加的任务语句
crondir=/tmp/cron_$USER tmpcron=/tmp/cron_$USER
crontab -l > $crondir croncmd -l > $tmpcron
sed -i "/$1/d" $crondir sed -i "/$1/d" $tmpcron
echo "$2" >> $crondir sed -i '/^$/d' $tmpcron
crontab $crondir echo "$2" >> $tmpcron
rm -f $crondir croncmd $tmpcron
rm -f $tmpcron
} }
mark_time(){ mark_time(){
start_time=`date +%s` start_time=`date +%s`
@@ -101,10 +93,10 @@ getyaml(){
#前后端订阅服务器地址索引,可在此处添加! #前后端订阅服务器地址索引,可在此处添加!
Server=`sed -n ""$server_link"p"<<EOF Server=`sed -n ""$server_link"p"<<EOF
subcon.dlj.tf subcon.dlj.tf
subconverter.herokuapp.com
subconverter-web.now.sh
api.dler.io api.dler.io
api.wcc.best api.wcc.best
api2.tsutsu.cc
api.v1.mk
EOF` EOF`
Config=`sed -n ""$rule_link"p"<<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_NoReject.ini
@@ -121,9 +113,14 @@ https://gist.githubusercontent.com/tindy2013/1fa08640a9088ac8652dbd40c5d2715b/ra
https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/basic.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 https://subconverter.oss-ap-southeast-1.aliyuncs.com/Rules/RemoteConfig/special/netease.ini
https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Google.ini https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online_Full_Google.ini
https://github.com/juewuy/ShellClash/raw/master/rules/ACL4SSR_Online_Games.ini
https://github.com/juewuy/ShellClash/raw/master/rules/ACL4SSR_Online_Mini_Games.ini
https://github.com/juewuy/ShellClash/raw/master/rules/ACL4SSR_Online_Full_Games.ini
EOF` EOF`
Https=$(echo ${Https//\%26/\&}) #将%26替换回&
#如果传来的是Url链接则合成Https链接否则直接使用Https链接 #如果传来的是Url链接则合成Https链接否则直接使用Https链接
if [ -z "$Https" ];then if [ -z "$Https" ];then
#[ -n "$(echo $Url | grep -o 'https://dler')" ] && Server='api.dler.io'
Https="https://$Server/sub?target=clash&insert=true&new_name=true&scv=true&exclude=$exclude&include=$include&url=$Url&config=$Config" Https="https://$Server/sub?target=clash&insert=true&new_name=true&scv=true&exclude=$exclude&include=$include&url=$Url&config=$Config"
markhttp=1 markhttp=1
fi fi
@@ -136,12 +133,12 @@ EOF`
yaml=$clashdir/config.yaml yaml=$clashdir/config.yaml
yamlnew=/tmp/clash_config_$USER.yaml yamlnew=/tmp/clash_config_$USER.yaml
rm -rf $yamlnew rm -rf $yamlnew
webget $yamlnew $Https $0 webget $yamlnew $Https 0 0 0 1
if [ "$result" != "200" ];then if [ "$?" = "1" ];then
if [ -z "$markhttp" ];then if [ -z "$markhttp" ];then
echo ----------------------------------------------- echo -----------------------------------------------
logger "配置文件获取失败!" 31 logger "配置文件获取失败!" 31
echo -e "\033[31m请尝试使用【导入订阅】功能!\033[0m" echo -e "\033[31m请尝试使用【在线生成配置文件】功能!\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
exit 1 exit 1
else else
@@ -152,7 +149,7 @@ EOF`
retry=$((retry+1)) retry=$((retry+1))
logger "配置文件获取失败!" 31 logger "配置文件获取失败!" 31
echo -e "\033[32m尝试使用其他服务器获取配置\033[0m" echo -e "\033[32m尝试使用其他服务器获取配置\033[0m"
logger "正在重试第$retry次/共5次" 32 logger "正在重试第$retry次/共5次" 33
sed -i '/server_link=*/'d $ccfg sed -i '/server_link=*/'d $ccfg
if [ "$server_link" -ge 5 ]; then if [ "$server_link" -ge 5 ]; then
server_link=0 server_link=0
@@ -166,7 +163,7 @@ EOF`
else else
Https="" Https=""
#检测节点或providers #检测节点或providers
if [ -z "$(cat $yamlnew | grep -E 'server:|proxy-providers:' | grep -v 'nameserver' | head -n 1)" ];then if [ -z "$(cat $yamlnew | grep -E 'server|proxy-providers' | grep -v 'nameserver' | head -n 1)" ];then
echo ----------------------------------------------- echo -----------------------------------------------
logger "获取到了配置文件,但似乎并不包含正确的节点信息!" 31 logger "获取到了配置文件,但似乎并不包含正确的节点信息!" 31
echo ----------------------------------------------- echo -----------------------------------------------
@@ -233,7 +230,7 @@ modify_yaml(){
exper='experimental: {ignore-resolve-fail: true, interface-name: en0}' exper='experimental: {ignore-resolve-fail: true, interface-name: en0}'
#dns配置 #dns配置
if [ "$dns_mod" = "fake-ip" ];then 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}}' 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","*.sgcc.com.cn","*.alicdn.com","*.aliyuncs.com"], nameserver: ['$dns_nameserver', 127.0.0.1:53], fallback: ['$dns_fallback'], fallback-filter: {geoip: true}}'
else 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}}' 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 fi
@@ -245,9 +242,11 @@ modify_yaml(){
b=$(grep -n "^prox" $yaml | head -1 | cut -d ":" -f 1) b=$(grep -n "^prox" $yaml | head -1 | cut -d ":" -f 1)
b=$((b-1)) b=$((b-1))
mkdir -p $tmpdir > /dev/null mkdir -p $tmpdir > /dev/null
sed "${a},${b}d" $yaml > $tmpdir/proxy.yaml [ "$b" != "0" ] && sed "${a},${b}d" $yaml > $tmpdir/proxy.yaml
#跳过本地tls证书验证 #跳过本地tls证书验证
[ "$skip_cert" = "已开启" ] && sed -i '10,99s/skip-cert-verify: false/skip-cert-verify: true/' $tmpdir/proxy.yaml [ "$skip_cert" = "已开启" ] && sed -i '1,99s/skip-cert-verify: false/skip-cert-verify: true/' $tmpdir/proxy.yaml
#检测是否使用script规则
[ -n "$(cat $yaml | grep -E '^script:')" ] && mode='mode: Script'
#添加配置 #添加配置
################################### ###################################
cat > $tmpdir/set.yaml <<EOF cat > $tmpdir/set.yaml <<EOF
@@ -264,7 +263,7 @@ secret: $secret
$tun $tun
$exper $exper
$dns $dns
store-selected: false store-selected: $restore
EOF EOF
################################### ###################################
[ -f $clashdir/user.yaml ] && yaml_user=$clashdir/user.yaml [ -f $clashdir/user.yaml ] && yaml_user=$clashdir/user.yaml
@@ -273,22 +272,42 @@ EOF
#插入自定义规则 #插入自定义规则
sed -i "/#自定义规则/d" $tmpdir/config.yaml sed -i "/#自定义规则/d" $tmpdir/config.yaml
if [ -f $clashdir/rules.yaml ];then if [ -f $clashdir/rules.yaml ];then
sed -i '/^$/d' $clashdir/rules.yaml && echo >> $clashdir/rules.yaml #处理换行
space=$(sed -n '/^rules/{n;p}' $tmpdir/proxy.yaml | grep -oE '^\ *') #获取空格数
while read line;do while read line;do
[ -z "$(echo "$line " | grep '#')" ] && \ [ -z "$(echo "$line " | grep '#')" ] && \
[ -n "$(echo "$line" | grep '\-\ ')" ] && \ [ -n "$(echo "$line" | grep '\-\ ')" ] && \
line=$(echo "$line" | sed 's#/#\\/#') && \ line=$(echo "$line" | sed 's#/#\\/#') && \
sed -i "/^rules:/a\ $line #自定义规则" $tmpdir/config.yaml sed -i "/^rules:/a\\$space$line #自定义规则" $tmpdir/config.yaml
done < $clashdir/rules.yaml done < $clashdir/rules.yaml
fi fi
#如果没有使用小闪存模式 #如果没有使用小闪存模式
if [ "$tmpdir" != "$bindir" ];then if [ "$tmpdir" != "$bindir" ];then
compare $tmpdir/config.yaml $yaml cmp -s $tmpdir/config.yaml $yaml >/dev/null 2>&1
[ "$?" != 0 ] && mv -f $tmpdir/config.yaml $yaml || rm -f $tmpdir/config.yaml [ "$?" != 0 ] && mv -f $tmpdir/config.yaml $yaml || rm -f $tmpdir/config.yaml
fi fi
rm -f $tmpdir/set.yaml rm -f $tmpdir/set.yaml
rm -f $tmpdir/proxy.yaml rm -f $tmpdir/proxy.yaml
} }
#设置路由规则 #设置路由规则
cn_ip_route(){
if [ ! -f $bindir/cn_ip.txt ];then
if [ -f $clashdir/cn_ip.txt ];then
mv $clashdir/cn_ip.txt $bindir/cn_ip.txt
else
logger "未找到cn_ip列表正在下载" 33
$0 webget $bindir/cn_ip.txt "$update_url/bin/china_ip_list.txt"
[ "$?" = "1" ] && rm -rf $bindir/cn_ip.txt && logger "列表下载失败,已退出!" 31 && exit 1
fi
fi
if [ -f $bindir/cn_ip.txt ];then
echo "create cn_ip hash:net family inet hashsize 1024 maxelem 65536" > /tmp/cn_$USER.ipset
awk '!/^$/&&!/^#/{printf("add cn_ip %s'" "'\n",$0)}' $bindir/cn_ip.txt >> /tmp/cn_$USER.ipset
ipset -! flush cn_ip 2>/dev/null
ipset -! restore < /tmp/cn_$USER.ipset
rm -rf cn_$USER.ipset
fi
}
start_redir(){ start_redir(){
#获取本地局域网地址段 #获取本地局域网地址段
gethost gethost
@@ -302,6 +321,7 @@ start_redir(){
iptables -t nat -A clash -d 192.168.0.0/16 -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 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 -d 240.0.0.0/4 -j RETURN
[ "$dns_mod" = "redir_host" -a "$cn_ip_route" = "已开启" ] && iptables -t nat -A clash -m set --match-set cn_ip dst -j RETURN >/dev/null 2>&1 #绕过大陆IP
if [ "$macfilter_type" = "白名单" -a -n "$(cat $clashdir/mac)" ];then if [ "$macfilter_type" = "白名单" -a -n "$(cat $clashdir/mac)" ];then
#mac白名单 #mac白名单
for mac in $(cat $clashdir/mac); do for mac in $(cat $clashdir/mac); do
@@ -315,6 +335,15 @@ start_redir(){
iptables -t nat -A clash -p tcp $ports -j REDIRECT --to-ports $redir_port iptables -t nat -A clash -p tcp $ports -j REDIRECT --to-ports $redir_port
fi fi
iptables -t nat -A PREROUTING -p tcp $lanhost -j clash iptables -t nat -A PREROUTING -p tcp $lanhost -j clash
if [ "$public_support" = "已开启" ];then
iptables -I INPUT -p tcp --dport $mix_port -j ACCEPT
iptables -I INPUT -p tcp --dport $db_port -j ACCEPT
fi
#Google home DNS特殊处理
iptables -t nat -I PREROUTING -p tcp -d 8.8.8.8 -j clash
iptables -t nat -I PREROUTING -p tcp -d 8.8.4.4 -j clash
#Docker特殊处理
[ "$local_proxy" = "已开启" ] && iptables -t nat -I PREROUTING -s 172.16.0.0/12 -j clash
#设置ipv6转发 #设置ipv6转发
ip6_nat=$(ip6tables -t nat -L 2>&1 | grep -o 'Chain') ip6_nat=$(ip6tables -t nat -L 2>&1 | grep -o 'Chain')
if [ -n "$ip6_nat" -a "$ipv6_support" = "已开启" ];then if [ -n "$ip6_nat" -a "$ipv6_support" = "已开启" ];then
@@ -357,9 +386,6 @@ start_dns(){
iptables -t nat -A clash_dns -p tcp --dport 53 -j REDIRECT --to $dns_port iptables -t nat -A clash_dns -p tcp --dport 53 -j REDIRECT --to $dns_port
fi fi
iptables -t nat -A PREROUTING -p udp -j clash_dns 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 #ipv6DNS
ip6_nat=$(ip6tables -t nat -L 2>&1 | grep -o 'Chain') ip6_nat=$(ip6tables -t nat -L 2>&1 | grep -o 'Chain')
if [ -n "$ip6_nat" ];then if [ -n "$ip6_nat" ];then
@@ -397,6 +423,7 @@ start_udp(){
iptables -t mangle -A clash -d 192.168.0.0/16 -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 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 -d 240.0.0.0/4 -j RETURN
[ "$dns_mod" = "redir_host" -a "$cn_ip_route" = "已开启" ] && iptables -t mangle -A clash -m set --match-set cn_ip dst -j RETURN >/dev/null 2>&1 #绕过大陆IP
if [ "$macfilter_type" = "白名单" -a -n "$(cat $clashdir/mac)" ];then if [ "$macfilter_type" = "白名单" -a -n "$(cat $clashdir/mac)" ];then
#mac白名单 #mac白名单
for mac in $(cat $clashdir/mac); do for mac in $(cat $clashdir/mac); do
@@ -411,20 +438,75 @@ start_udp(){
fi fi
iptables -t mangle -A PREROUTING -p udp $lanhost -j clash iptables -t mangle -A PREROUTING -p udp $lanhost -j clash
} }
start_output(){
#流量过滤规则
iptables -t nat -N clash_out
iptables -t nat -A clash_out -m owner --gid-owner 7890 -j RETURN
iptables -t nat -A clash_out -d 0.0.0.0/8 -j RETURN
iptables -t nat -A clash_out -d 10.0.0.0/8 -j RETURN
iptables -t nat -A clash_out -d 127.0.0.0/8 -j RETURN
iptables -t nat -A clash_out -d 169.254.0.0/16 -j RETURN
iptables -t nat -A clash_out -d 172.16.0.0/12 -j RETURN
iptables -t nat -A clash_out -d 192.168.0.0/16 -j RETURN
iptables -t nat -A clash_out -d 224.0.0.0/4 -j RETURN
iptables -t nat -A clash_out -d 240.0.0.0/4 -j RETURN
[ "$dns_mod" = "redir_host" -a "$cn_ip_route" = "已开启" ] && iptables -t nat -A clash_out -m set --match-set cn_ip dst -j RETURN >/dev/null 2>&1 #绕过大陆IP
if [ "$macfilter_type" = "白名单" -a -n "$(cat $clashdir/mac)" ];then
#mac白名单
for mac in $(cat $clashdir/mac); do
iptables -t nat -A clash_out -p tcp $ports -m mac --mac-source $mac -j REDIRECT --to-ports $redir_port
done
else
#mac黑名单
for mac in $(cat $clashdir/mac); do
iptables -t nat -A clash_out -m mac --mac-source $mac -j RETURN
done
iptables -t nat -A clash_out -p tcp $ports -j REDIRECT --to-ports $redir_port
fi
iptables -t nat -A OUTPUT -p tcp -j clash_out
#设置dns转发
iptables -t nat -N clash_dns_out
iptables -t nat -A clash_dns_out -m owner --gid-owner 7890 -j RETURN
if [ "$macfilter_type" = "白名单" -a -n "$(cat $clashdir/mac)" ];then
#mac白名单
for mac in $(cat $clashdir/mac); do
iptables -t nat -A clash_dns_out -p udp --dport 53 -m mac --mac-source $mac -j REDIRECT --to $dns_port
iptables -t nat -A clash_dns_out -p tcp --dport 53 -m mac --mac-source $mac -j REDIRECT --to $dns_port
done
else
#mac黑名单
for mac in $(cat $clashdir/mac); do
iptables -t nat -A clash_dns_out -m mac --mac-source $mac -j RETURN
done
iptables -t nat -A clash_dns_out -p udp --dport 53 -j REDIRECT --to $dns_port
iptables -t nat -A clash_dns_out -p tcp --dport 53 -j REDIRECT --to $dns_port
fi
iptables -t nat -A OUTPUT -p udp -j clash_dns_out
}
stop_iptables(){ stop_iptables(){
gethost #获取本地局域网地址段 gethost #获取本地局域网地址段
#重置iptables规则 #重置iptables规则
ip rule del fwmark 1 table 100 2> /dev/null ip rule del fwmark 1 table 100 2> /dev/null
ip route del local default dev lo table 100 2> /dev/null ip route del local default dev lo table 100 2> /dev/null
iptables -t nat -D PREROUTING -p tcp $lanhost -j clash 2> /dev/null iptables -t nat -D PREROUTING -p tcp $lanhost -j clash 2> /dev/null
iptables -D INPUT -p tcp --dport $mix_port -j ACCEPT 2> /dev/null
iptables -D INPUT -p tcp --dport $db_port -j ACCEPT 2> /dev/null
iptables -t nat -D PREROUTING -p udp -j clash_dns 2> /dev/null iptables -t nat -D PREROUTING -p udp -j clash_dns 2> /dev/null
iptables -t nat -D PREROUTING -p tcp -d 8.8.8.8 -j clash_dns 2> /dev/null iptables -t nat -D PREROUTING -p tcp -d 8.8.8.8 -j clash 2> /dev/null
iptables -t nat -D PREROUTING -p tcp -d 8.8.4.4 -j clash_dns 2> /dev/null iptables -t nat -D PREROUTING -p tcp -d 8.8.4.4 -j clash 2> /dev/null
iptables -t nat -D PREROUTING -s 172.16.0.0/12 -j clash 2> /dev/null
iptables -t nat -F clash 2> /dev/null iptables -t nat -F clash 2> /dev/null
iptables -t nat -X clash 2> /dev/null iptables -t nat -X clash 2> /dev/null
iptables -t nat -F clash_dns 2> /dev/null iptables -t nat -F clash_dns 2> /dev/null
iptables -t nat -X clash_dns 2> /dev/null iptables -t nat -X clash_dns 2> /dev/null
iptables -D FORWARD -o utun -j ACCEPT 2> /dev/null iptables -D FORWARD -o utun -j ACCEPT 2> /dev/null
#重置output规则
iptables -t nat -D OUTPUT -p tcp -j clash_out 2> /dev/null
iptables -t nat -F clash_out 2> /dev/null
iptables -t nat -X clash_out 2> /dev/null
iptables -t nat -D OUTPUT -p udp -j clash_dns_out 2> /dev/null
iptables -t nat -F clash_dns_out 2> /dev/null
iptables -t nat -X clash_dns_out 2> /dev/null
#重置udp规则 #重置udp规则
iptables -t mangle -D PREROUTING -p udp $lanhost -j clash 2> /dev/null iptables -t mangle -D PREROUTING -p udp $lanhost -j clash 2> /dev/null
iptables -t mangle -F clash 2> /dev/null iptables -t mangle -F clash 2> /dev/null
@@ -437,6 +519,8 @@ stop_iptables(){
ip6tables -t nat -F clashv6_dns 2> /dev/null ip6tables -t nat -F clashv6_dns 2> /dev/null
ip6tables -t nat -X clashv6_dns 2> /dev/null ip6tables -t nat -X clashv6_dns 2> /dev/null
ip6tables -D FORWARD -o utun -j ACCEPT 2> /dev/null ip6tables -D FORWARD -o utun -j ACCEPT 2> /dev/null
#清理ipset规则
ipset destroy cn_ip >/dev/null 2>&1
} }
#面板配置保存相关 #面板配置保存相关
web_save(){ web_save(){
@@ -445,10 +529,6 @@ web_save(){
curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1" curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1"
elif [ -n "$(wget --help 2>&1|grep '\-\-method')" ];then elif [ -n "$(wget --help 2>&1|grep '\-\-method')" ];then
wget -q --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" -O - "$1" wget -q --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" -O - "$1"
else
logger 当前系统未安装curl且wget的版本太低无法保存节点配置 31
getconfig
cronset '保存节点配置'
fi fi
} }
#使用get_save获取面板节点设置 #使用get_save获取面板节点设置
@@ -469,7 +549,7 @@ web_restore(){
put_save(){ put_save(){
if curl --version > /dev/null 2>&1;then 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 curl -sS -X PUT -H "Authorization: Bearer ${secret}" -H "Content-Type:application/json" "$1" -d "$2" >/dev/null
else elif wget --version > /dev/null 2>&1;then
wget -q --method=PUT --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" --body-data="$2" "$1" >/dev/null wget -q --method=PUT --header="Authorization: Bearer ${secret}" --header="Content-Type:application/json" --body-data="$2" "$1" >/dev/null
fi fi
} }
@@ -520,7 +600,7 @@ bfstart(){
#读取配置文件 #读取配置文件
getconfig getconfig
[ ! -d $bindir/ui ] && mkdir -p $bindir/ui [ ! -d $bindir/ui ] && mkdir -p $bindir/ui
[ -z "$update_url" ] && update_url=https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master [ -z "$update_url" ] || [ -n "$(echo $update_url | grep 'github')" ] && update_url=https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master
#检查clash核心 #检查clash核心
if [ ! -f $bindir/clash ];then if [ ! -f $bindir/clash ];then
if [ -f $clashdir/clash ];then if [ -f $clashdir/clash ];then
@@ -532,8 +612,8 @@ bfstart(){
fi fi
[ -z "$cpucore" ] && source $clashdir/getdate.sh && getcpucore [ -z "$cpucore" ] && source $clashdir/getdate.sh && getcpucore
[ -z "$cpucore" ] && logger 找不到设备的CPU信息请手动指定处理器架构类型 31 && setcpucore [ -z "$cpucore" ] && logger 找不到设备的CPU信息请手动指定处理器架构类型 31 && setcpucore
webget $bindir/clash "$update_url/bin/$clashcore/clash-linux-$cpucore" $0 webget $bindir/clash "$update_url/bin/$clashcore/clash-linux-$cpucore"
[ "$?" = 1 ] && logger "核心下载失败,已退出!" 31 && rm -f $bindir/clash && exit 1 [ "$?" = "1" ] && rm -rf $bindir/clash && logger "核心下载失败,已退出!" 31 && exit 1
[ ! -x $bindir/clash ] && chmod +x $bindir/clash #检测可执行权限 [ ! -x $bindir/clash ] && chmod +x $bindir/clash #检测可执行权限
clashv=$($bindir/clash -v | awk '{print $2}') clashv=$($bindir/clash -v | awk '{print $2}')
setconfig clashv $clashv setconfig clashv $clashv
@@ -546,8 +626,8 @@ bfstart(){
else else
logger "未找到GeoIP数据库正在下载" 33 logger "未找到GeoIP数据库正在下载" 33
[ -z "$geotype" ] && geotype=cn_mini.mmdb [ -z "$geotype" ] && geotype=cn_mini.mmdb
webget $bindir/Country.mmdb $update_url/bin/$geotype $0 webget $bindir/Country.mmdb $update_url/bin/$geotype
[ "$?" = 1 ] && logger "数据库下载失败,已退出!" 31 && rm -f $bindir/Country.mmdb && exit 1 [ "$?" = "1" ] && rm -rf $bindir/Country.mmdb && logger "数据库下载失败,已退出!" 31 && exit 1
Geo_v=$(date +"%Y%m%d") Geo_v=$(date +"%Y%m%d")
setconfig Geo_v $Geo_v setconfig Geo_v $Geo_v
fi fi
@@ -556,7 +636,12 @@ bfstart(){
if [ -f $clashdir/ui/index.html -a ! -f $bindir/ui/index.html ];then if [ -f $clashdir/ui/index.html -a ! -f $bindir/ui/index.html ];then
cp -rf $clashdir/ui $bindir cp -rf $clashdir/ui $bindir
fi fi
catpac #生成pac文件 #检查curl或wget支持
curl --version > /dev/null 2>&1
[ "$?" = 1 ] && wget --version > /dev/null 2>&1
[ "$?" = 1 ] && restore=true || restore=false
#生成pac文件
catpac
#检查yaml配置文件 #检查yaml配置文件
if [ ! -f $clashdir/config.yaml ];then if [ ! -f $clashdir/config.yaml ];then
if [ -n "$Url" -o -n "$Https" ];then if [ -n "$Url" -o -n "$Https" ];then
@@ -568,6 +653,21 @@ bfstart(){
exit 1 exit 1
fi fi
fi fi
#本机代理准备
if [ "$local_proxy" = "已开启" -a "$local_type" = "iptables增强模式" ];then
if [ -z "$(id shellclash 2>/dev/null | grep 'root')" ];then
userdel shellclash 2>/dev/null
useradd shellclash -u 7890
groupmod shellclash -g 7890
sed -Ei s/7890:7890/0:7890/g /etc/passwd
fi
if [ "$start_old" != "已开启" ];then
[ -w /etc/systemd/system/clash.service ] && servdir=/etc/systemd/system/clash.service
[ -w /usr/lib/systemd/system/clash.service ] && servdir=/usr/lib/systemd/system/clash.service
setconfig ExecStart "/bin/su\ shellclash\ -c\ \"$bindir/clash\ -d\ $bindir\"" $servdir
systemctl daemon-reload >/dev/null
fi
fi
} }
afstart(){ afstart(){
@@ -576,16 +676,22 @@ afstart(){
$bindir/clash -t -d $bindir >/dev/null $bindir/clash -t -d $bindir >/dev/null
if [ "$?" = 0 ];then if [ "$?" = 0 ];then
#设置iptables转发规则 #设置iptables转发规则
[ "$dns_mod" = "redir_host" ] && [ "$cn_ip_route" = "已开启" ] && cn_ip_route
[ "$redir_mod" != "纯净模式" ] && [ "$dns_no" != "已禁用" ] && start_dns [ "$redir_mod" != "纯净模式" ] && [ "$dns_no" != "已禁用" ] && start_dns
[ "$redir_mod" != "纯净模式" ] && [ "$redir_mod" != "Tun模式" ] && start_redir [ "$redir_mod" != "纯净模式" ] && [ "$redir_mod" != "Tun模式" ] && start_redir
[ "$redir_mod" = "Redir模式" ] && [ "$tproxy_mod" = "已开启" ] && start_udp [ "$redir_mod" = "Redir模式" ] && [ "$tproxy_mod" = "已开启" ] && start_udp
[ "$local_proxy" = "已开启" ] && [ "$local_type" = "iptables增强模式" ] && start_output
#标记启动时间 #标记启动时间
mark_time mark_time
#设置本机代理 #设置本机代理
[ "$local_proxy" = "已开启" ] && $0 set_proxy $mix_port $db_port [ "$local_proxy" = "已开启" ] && $0 set_proxy $mix_port $db_port
#加载定时任务
[ -f $clashdir/cron ] && croncmd $clashdir/cron
#启用面板配置自动保存 #启用面板配置自动保存
cronset '#每10分钟保存节点配置' "*/10 * * * * test -n \"$(pidof clash)\" && $clashdir/start.sh web_save #每10分钟保存节点配置" if [ "$restore" = false ];then
cronset '#每10分钟保存节点配置' "*/10 * * * * test -n \"\$(pidof clash)\" && $clashdir/start.sh web_save #每10分钟保存节点配置"
[ -f $clashdir/web_save ] && web_restore & #后台还原面板配置 [ -f $clashdir/web_save ] && web_restore & #后台还原面板配置
fi
else else
logger "clash服务启动失败请查看报错信息" 31 logger "clash服务启动失败请查看报错信息" 31
$bindir/clash -t -d $bindir $bindir/clash -t -d $bindir
@@ -596,7 +702,11 @@ afstart(){
} }
start_old(){ start_old(){
#使用传统后台执行二进制文件的方式执行 #使用传统后台执行二进制文件的方式执行
if [ "$local_proxy" = "已开启" -a "$local_type" = "iptables增强模式" ];then
su shellclash -c "$bindir/clash -d $bindir >/dev/null" &
else
$bindir/clash -d $bindir >/dev/null & $bindir/clash -d $bindir >/dev/null &
fi
afstart afstart
$0 daemon $0 daemon
} }
@@ -630,7 +740,7 @@ start)
;; ;;
stop) stop)
getconfig getconfig
[ -n "$(pidof clash)" ] && web_save #保存面板配置 [ -n "$(pidof clash)" ] && [ "$restore" = false ] && web_save #保存面板配置
#删除守护进程&面板配置自动保存 #删除守护进程&面板配置自动保存
cronset "clash保守模式守护进程" cronset "clash保守模式守护进程"
cronset "保存节点配置" cronset "保存节点配置"
@@ -642,12 +752,27 @@ stop)
fi fi
PID=$(pidof clash) && [ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1 PID=$(pidof clash) && [ -n "$PID" ] && kill -9 $PID >/dev/null 2>&1
stop_iptables #清理iptables stop_iptables #清理iptables
[ "$local_proxy" = "已开启" ] && $0 unset_proxy #禁用本机代理 $0 unset_proxy #禁用本机代理
;; ;;
restart) restart)
$0 stop $0 stop
$0 start $0 start
;; ;;
init)
if [ -d "/etc/storage/clash" ];then
clashdir=/etc/storage/clash
if [ -w "/opt/etc/profile" ];then
profile=/opt/etc/profile
else
profile=/etc/profile
sed -i '' $profile #将软链接转化为一般文件
fi
fi
[ -d "/jffs/clash" ] && clashdir=/jffs/clash && profile=/jffs/configs/profile.add
echo "alias clash=\"$clashdir/clash.sh\"" >> $profile
echo "export clashdir=\"$clashdir\"" >> $profile
$0 start
;;
getyaml) getyaml)
getconfig getconfig
getyaml getyaml
@@ -657,7 +782,37 @@ updateyaml)
$0 restart $0 restart
;; ;;
webget) webget)
webget $2 $3 $4 $5 #设置临时http代理
[ -n "$(pidof clash)" ] && getconfig && export all_proxy="http://$authentication@127.0.0.1:$mix_port"
#参数【$2】代表下载目录【$3】代表在线地址
#参数【$4】代表输出显示【$4】不启用重定向
#参数【$6】代表验证证书【$7】使用clash文件头
if curl --version > /dev/null 2>&1;then
[ "$4" = "echooff" ] && progress='-s' || progress='-#'
[ "$5" = "rediroff" ] && redirect='' || redirect='-L'
[ "$6" = "skipceroff" ] && certificate='' || certificate='-k'
#[ -n "$7" ] && agent='-A "clash"'
result=$(curl $agent -w %{http_code} --connect-timeout 3 $progress $redirect $certificate -o "$2" "$3")
[ "$?" != "0" ] && export all_proxy="" && result=$(curl $agent -w %{http_code} --connect-timeout 3 $progress $redirect $certificate -o "$2" "$3")
else
if wget --version > /dev/null 2>&1;then
[ "$4" = "echooff" ] && progress='-q' || progress='-q --show-progress'
[ "$5" = "rediroff" ] && redirect='--max-redirect=0' || redirect=''
[ "$6" = "skipceroff" ] && certificate='' || certificate='--no-check-certificate'
timeout='--timeout=3 -t 2'
#[ -n "$7" ] && agent='--user-agent="clash"'
fi
[ "$4" = "echoon" ] && progress=''
[ "$4" = "echooff" ] && progress='-q'
wget -Y on $agent $progress $redirect $certificate $timeout -O "$2" "$3"
if [ "$?" != "0" ];then
wget -Y off $agent $progress $redirect $certificate $timeout -O "$2" "$3"
[ "$?" = "0" ] && result="200"
else
result="200"
fi
fi
[ "$result" = "200" ] && exit 0 || exit 1
;; ;;
web_save) web_save)
getconfig getconfig
@@ -669,23 +824,14 @@ web_restore)
;; ;;
daemon) daemon)
getconfig getconfig
cronset '#clash保守模式守护进程' "*/1 * * * * test -z \"$(pidof clash)\" && $clashdir/start.sh restart #clash保守模式守护进程" cronset '#clash保守模式守护进程' "*/1 * * * * test -z \"\$(pidof clash)\" && $clashdir/start.sh restart #clash保守模式守护进程"
;; ;;
cronset) cronset)
cronset $2 $3 cronset $2 $3
;; ;;
set_proxy) set_proxy)
getconfig getconfig
#GNOME配置 if [ "$local_type" = "环境变量" ];then
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 ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile [ -w /etc/profile ] && profile=/etc/profile
echo 'export all_proxy=http://127.0.0.1:'"$mix_port" >> $profile echo 'export all_proxy=http://127.0.0.1:'"$mix_port" >> $profile
@@ -693,15 +839,6 @@ set_proxy)
fi fi
;; ;;
unset_proxy) 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 ~/.bashrc ] && profile=~/.bashrc
[ -w /etc/profile ] && profile=/etc/profile [ -w /etc/profile ] && profile=/etc/profile
sed -i '/all_proxy/'d $profile sed -i '/all_proxy/'d $profile