From 07106cfbc82fb1edb93e32c03313fb7f1a378a49 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 21 Sep 2019 10:22:22 +0800 Subject: [PATCH] OpenClash: bump to v0.34.4-beta --- package/cnsztl/luci-app-openclash/Makefile | 5 +- .../config/openclash_custom_fake_black.conf | 2 + .../files/etc/init.d/openclash | 235 +++++++++--------- .../files/etc/openclash/default.yaml | 32 ++- .../files/etc/openclash/openclash_version | 4 +- .../model/cbi/openclash/groups-config.lua | 4 +- .../model/cbi/openclash/servers-config.lua | 25 +- .../lua/luci/model/cbi/openclash/servers.lua | 16 +- .../lua/luci/model/cbi/openclash/settings.lua | 4 +- .../lib/lua/luci/view/openclash/developer.htm | 2 +- .../usr/lib/lua/luci/view/openclash/myip.htm | 22 +- .../usr/lib/lua/luci/view/openclash/state.htm | 6 +- .../lib/lua/luci/view/openclash/status.htm | 62 ++++- .../lib/lua/luci/view/openclash/update.htm | 6 +- .../usr/share/openclash/dashboard/index.html | 4 +- ...s => 1.bundle.b2b352082cb77749cd2e.min.js} | 0 .../js/bundle.45da5278717379ab5871.min.js | 1 - .../js/bundle.b2b352082cb77749cd2e.min.js | 1 + ...5871.css => main.b2b352082cb77749cd2e.css} | 18 +- .../files/usr/share/openclash/yml_change.sh | 32 +++ .../usr/share/openclash/yml_groups_get.sh | 4 +- .../usr/share/openclash/yml_groups_set.sh | 4 + .../usr/share/openclash/yml_proxys_get.sh | 16 +- .../usr/share/openclash/yml_proxys_set.sh | 31 ++- .../i18n/zh-cn/openclash.zh-cn.po | 30 +-- 25 files changed, 352 insertions(+), 214 deletions(-) rename package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/{1.bundle.45da5278717379ab5871.min.js => 1.bundle.b2b352082cb77749cd2e.min.js} (100%) delete mode 100644 package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.45da5278717379ab5871.min.js create mode 100644 package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.b2b352082cb77749cd2e.min.js rename package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/{main.45da5278717379ab5871.css => main.b2b352082cb77749cd2e.css} (99%) diff --git a/package/cnsztl/luci-app-openclash/Makefile b/package/cnsztl/luci-app-openclash/Makefile index a7076a257d..4565ec77c0 100644 --- a/package/cnsztl/luci-app-openclash/Makefile +++ b/package/cnsztl/luci-app-openclash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-openclash -PKG_VERSION:=0.34.2 +PKG_VERSION:=0.34.4 PKG_RELEASE:=beta PKG_MAINTAINER:=vernesong @@ -30,7 +30,6 @@ define Build/Prepare po2lmo $(po) $(PKG_BUILD_DIR)/$(patsubst %.po,%.lmo,$(notdir $(po)));) chmod 0755 ${CURDIR}/files/etc/init.d/openclash chmod -R 0755 ${CURDIR}/files/usr/share/openclash/ - chmod -R 0755 ${CURDIR}/files/usr/lib/lua/luci/model/cbi/openclash/ endef define Build/Configure @@ -73,6 +72,8 @@ elif [ -f "/tmp/config.yml" ]; then mv "/tmp/config.yml" "/etc/openclash/config.yaml" 2>/dev/null fi uci set openclash.config.enable=0 2>/dev/null && uci commit openclash 2>/dev/null +chmod 0755 /etc/init.d/openclash 2>/dev/null +chmod -R 0755 /usr/share/openclash/ 2>/dev/null rm -rf /tmp/luci* endef diff --git a/package/cnsztl/luci-app-openclash/files/etc/config/openclash_custom_fake_black.conf b/package/cnsztl/luci-app-openclash/files/etc/config/openclash_custom_fake_black.conf index 236e32de41..57af44021d 100644 --- a/package/cnsztl/luci-app-openclash/files/etc/config/openclash_custom_fake_black.conf +++ b/package/cnsztl/luci-app-openclash/files/etc/config/openclash_custom_fake_black.conf @@ -55,3 +55,5 @@ interface.music.163.com #win10本地连接检测 msftconnecttest.com msftncsi.com +#QQ快捷登录 +qq.com \ No newline at end of file diff --git a/package/cnsztl/luci-app-openclash/files/etc/init.d/openclash b/package/cnsztl/luci-app-openclash/files/etc/init.d/openclash index f77a0cc1b3..44c6b01eaa 100755 --- a/package/cnsztl/luci-app-openclash/files/etc/init.d/openclash +++ b/package/cnsztl/luci-app-openclash/files/etc/init.d/openclash @@ -234,40 +234,44 @@ yml_dns_custom() else sed -i "/^ \{0,\}nameserver:/c\ nameserver:" "$2" 2>/dev/null sed -i "/^ \{0,\}fallback:/c\ fallback:" "$2" 2>/dev/null + fi + +#fallback-filter + if [ ! -z "$(grep '^ \{0,\}fallback:' $2)" ]; then + if [ -z "$(grep '^ \{0,\}fallback-filter:' $2)" ]; then + sed -i '/OpenClash-General-Settings/i\ fallback-filter:' "$2" 2>/dev/null + sed -i '/OpenClash-General-Settings/i\ geoip: true' "$2" 2>/dev/null + sed -i '/OpenClash-General-Settings/i\ ipcidr:' "$2" 2>/dev/null + sed -i '/OpenClash-General-Settings/i\ - 240.0.0.0/4' "$2" 2>/dev/null + else + if [ -z "$(grep '^ fallback-filter:' $2)" ]; then + sed -i "/fallback-filter:/c\ fallback-filter:" "$2" 2>/dev/null + fi + if [ -z "$(grep '^ geoip: true' $2)" ]; then + sed -i "/geoip: true/c\ geoip: true" "$2" 2>/dev/null + fi + if [ -z "$(grep '^ ipcidr:' $2)" ]; then + sed -i "/ipcidr:/c\ ipcidr:" "$2" 2>/dev/null + fi + fi + if [ -z "$(grep "^ - " $2)" ]; then + sed -i '/^ \{0,\}nameserver:/,/^ \{0,\}fallback-filter:/ {s/^ \{0,\}- / - /}' "$2" 2>/dev/null #修改参数空格 + fi + if [ -z "$(grep "^ - " $2)" ]; then + sed -i '/^ \{0,\}ipcidr:/,/OpenClash-General-Settings/ {s/^ \{0,\}- / - /}' "$2" 2>/dev/null #修改参数空格 + fi + else #删除fallback-filter + if [ ! -z "$(grep '^ \{0,\}ipcidr:' $2)" ]; then + sed -i '/^ \{0,\}ipcidr:/,/OpenClash-General-Settings/ {/^ \{0,\}-/d}' "$2" 2>/dev/null + fi if [ ! -z "$(grep "^ \{0,1\}- " $2)" ]; then sed -i "s/^ \{0,\}- / - /" "$2" 2>/dev/null #添加参数空格 fi + sed -i '/fallback-filter:/d' "$2" 2>/dev/null + sed -i '/geoip:/d' "$2" 2>/dev/null + sed -i '/ipcidr:/d' "$2" 2>/dev/null fi - -} -#添加自定义Hosts设置 -yml_hosts_custom() -{ - if [ "$en_mode" = "redir-host" ]; then - if [ -z "$(grep '^ \{0,\}hosts:' $1)" ]; then - echo " hosts:" >>"$1" 2>/dev/null - else - if [ -z "$(grep '^ hosts:' $1)" ]; then - sed -i "/hosts:/c\ hosts:" "$1" 2>/dev/null - fi - fi - sed -i "s/^ \{0,\}/ /" "$2" 2>/dev/null #修改参数空格 - sed -i "1i\##Custom HOSTS##" "$2" 2>/dev/null - echo "##Custom HOSTS END##" >>"$2" 2>/dev/null - sed -i '/##Custom HOSTS##/,/##Custom HOSTS END##/d' "$1" 2>/dev/null - sed -i '/^ hosts:/r/etc/config/openclash_custom_hosts.list' "$1" 2>/dev/null - sed -i '/##Custom HOSTS##/d' "$2" 2>/dev/null - sed -i '/##Custom HOSTS END##/d' "$2" 2>/dev/null - else - sed -i '/^ *$/d' "$1" 2>/dev/null - lastl = `sed -n '/hosts:/=' "$1" 2>/dev/null` - lasthl = `sed -n '$=' "$1" 2>/dev/null` - if [ "$lastl" = "$lasthl" ]; then - sed -i '/^ \{0,\}hosts:/d' "$1" 2>/dev/null - fi - sed -i '/##Custom HOSTS##/,/##Custom HOSTS END##/d' "$1" 2>/dev/null - fi } #获取认证信息 @@ -351,47 +355,46 @@ if [ "$enable" -eq 1 ] && [ -f "$CONFIG_FILE" ]; then sleep 5 echo "" >$START_LOG else - echo "第三步: 修改配置文件..." >$START_LOG - config_load "openclash" - config_foreach yml_auth_get "authentication" - yml_auth_custom "$CONFIG_FILE" - yml_cut "$CHANGE_FILE" "$RULE_FILE" "$DNS_FILE" "$CONFIG_FILE" "$PROXY_FILE" - yml_dns_custom "$enable_custom_dns" "$DNS_FILE" - yml_hosts_custom "$CHANGE_FILE" "$HOSTS_FILE" - sh /usr/share/openclash/yml_change.sh "$LOGTIME" "$en_mode" "$enable_custom_dns" "$da_password" "$cn_port" "$proxy_port" "$CHANGE_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$lan_ip" & - sh /usr/share/openclash/yml_rules_change.sh "$LOGTIME" "$rule_source" "$enable_custom_clash_rules" "$RULE_FILE" & - wait - cat $CHANGE_FILE $DNS_FILE $PROXY_FILE $RULE_FILE > $CONFIG_FILE 2>/dev/null - rm -rf /tmp/yaml_* 2>/dev/null - echo "第四步: DNS设置检查..." >$START_LOG - if [ ! -z "$(sed -n '/^ \{0,\}nameserver:/{n;p}' $CONFIG_FILE |grep '^ \{0,\}fallback:')" ] || [ ! -z "$(sed -n '/^ \{0,\}nameserver:/{n;p}' $CONFIG_FILE |grep 'OpenClash-General')" ]; then - echo "错误: 配置文件DNS选项下的Nameserver必须设置服务器,已自动还原配置文件,请重新设置!" >$START_LOG - echo "${LOGTIME} Nameserver Must Be Set, Please Change Your Configrations In Config.yaml" >>$LOG_FILE - mv $START_BACKUP $CONFIG_FILE - sleep 10 - echo "" >$START_LOG - else - echo "第五步: 启动 Clash 主程序..." >$START_LOG - nohup $CLASH -d "$CLASH_CONFIG" >> $LOG_FILE 2>&1 & + echo "第三步: 修改配置文件..." >$START_LOG + config_load "openclash" + config_foreach yml_auth_get "authentication" + yml_auth_custom "$CONFIG_FILE" + yml_cut "$CHANGE_FILE" "$RULE_FILE" "$DNS_FILE" "$CONFIG_FILE" "$PROXY_FILE" + yml_dns_custom "$enable_custom_dns" "$DNS_FILE" + sh /usr/share/openclash/yml_change.sh "$LOGTIME" "$en_mode" "$enable_custom_dns" "$da_password" "$cn_port" "$proxy_port" "$CHANGE_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$lan_ip" "$HOSTS_FILE" & + sh /usr/share/openclash/yml_rules_change.sh "$LOGTIME" "$rule_source" "$enable_custom_clash_rules" "$RULE_FILE" & + wait + cat $CHANGE_FILE $DNS_FILE $PROXY_FILE $RULE_FILE > $CONFIG_FILE 2>/dev/null + rm -rf /tmp/yaml_* 2>/dev/null + echo "第四步: DNS设置检查..." >$START_LOG + if [ ! -z "$(sed -n '/^ \{0,\}nameserver:/{n;p}' $CONFIG_FILE |grep '^ \{0,\}fallback:')" ] || [ ! -z "$(sed -n '/^ \{0,\}nameserver:/{n;p}' $CONFIG_FILE |grep 'OpenClash-General')" ]; then + echo "错误: 配置文件DNS选项下的Nameserver必须设置服务器,已自动还原配置文件,请重新设置!" >$START_LOG + echo "${LOGTIME} Nameserver Must Be Set, Please Change Your Configrations In Config.yaml" >>$LOG_FILE + mv $START_BACKUP $CONFIG_FILE + sleep 10 + echo "" >$START_LOG + else + echo "第五步: 启动 Clash 主程序..." >$START_LOG + nohup $CLASH -d "$CLASH_CONFIG" >> $LOG_FILE 2>&1 & - echo "第六步: 设置控制面板..." >$START_LOG - ln -s /usr/share/openclash/yacd /www/openclash 2>/dev/null + echo "第六步: 设置控制面板..." >$START_LOG + ln -s /usr/share/openclash/yacd /www/openclash 2>/dev/null - echo "第七步: 设置 OpenClash 防火墙规则..." >$START_LOG - if [ -z "$(uci get firewall.openclash)" ] || [ -z "$(uci get ucitrack.@openclash[-1].init)" ]; then - uci delete ucitrack.@openclash[-1] >/dev/null 2>&1 - uci add ucitrack openclash >/dev/null 2>&1 - uci set ucitrack.@openclash[-1].init=openclash >/dev/null 2>&1 - uci commit ucitrack >/dev/null 2>&1 - uci delete firewall.openclash >/dev/null 2>&1 - uci set firewall.openclash=include >/dev/null 2>&1 - uci set firewall.openclash.type=script >/dev/null 2>&1 - uci set firewall.openclash.path=/var/etc/openclash.include >/dev/null 2>&1 - uci set firewall.openclash.reload=1 >/dev/null 2>&1 - uci commit firewall >/dev/null 2>&1 - fi - mkdir -p /var/etc - cat > "/var/etc/openclash.include" <<-EOF + echo "第七步: 设置 OpenClash 防火墙规则..." >$START_LOG + if [ -z "$(uci get firewall.openclash 2>/dev/null)" ] || [ -z "$(uci get ucitrack.@openclash[-1].init 2>/dev/null)" ]; then + uci delete ucitrack.@openclash[-1] >/dev/null 2>&1 + uci add ucitrack openclash >/dev/null 2>&1 + uci set ucitrack.@openclash[-1].init=openclash >/dev/null 2>&1 + uci commit ucitrack >/dev/null 2>&1 + uci delete firewall.openclash >/dev/null 2>&1 + uci set firewall.openclash=include >/dev/null 2>&1 + uci set firewall.openclash.type=script >/dev/null 2>&1 + uci set firewall.openclash.path=/var/etc/openclash.include >/dev/null 2>&1 + uci set firewall.openclash.reload=1 >/dev/null 2>&1 + uci commit firewall >/dev/null 2>&1 + fi + mkdir -p /var/etc +cat > "/var/etc/openclash.include" <<-EOF iptables -t nat -N openclash iptables -t nat -A openclash -d 0.0.0.0/8 -j RETURN iptables -t nat -A openclash -d 10.0.0.0/8 -j RETURN @@ -407,52 +410,59 @@ iptables -t nat -A PREROUTING -p tcp -j openclash iptables -t nat -A OUTPUT -p tcp -d 198.18.0.1/16 -j REDIRECT --to-ports "$proxy_port" EOF -if [ "$ipv6_enable" -eq 1 ]; then - cat >> "/var/etc/openclash.include" <<-EOF + if [ "$ipv6_enable" -eq 1 ]; then +cat >> "/var/etc/openclash.include" <<-EOF ip6tables -t nat -N openclash ip6tables -t nat -A openclash -p tcp -j REDIRECT --to-ports "$proxy_port" ip6tables -t nat -A PREROUTING -p tcp -j openclash EOF -fi + fi - /etc/init.d/firewall restart >/dev/null 2>&1 - /etc/init.d/miniupnpd restart >/dev/null 2>&1 - - echo "第八步: 重启 Dnsmasq 程序..." >$START_LOG - if [ "$(iptables -t nat -nL PREROUTING --line-number |grep dpt:53 |wc -l)" -gt 2 ]; then - echo "发现53端口被劫持,请将OpenClash设置为劫持53端口程序的上游DNS服务器!" >$START_LOG - echo "${LOGTIME} Warring: OpenClash May Can Not Take Over DNS, Please Use OpenClash for Upstream DNS Resolve Server" >> $LOG_FILE - sleep 5 - fi - [ "$enable_redirect_dns" != "0" ] && { - change_dns - } - fake_block "$en_mode" "$direct_dns" - /etc/init.d/dnsmasq restart >/dev/null 2>&1 - if pidof clash >/dev/null; then - echo "第九步: 添加 OpenClash 计划任务,启动进程守护程序..." >$START_LOG - add_cron - echo "OpenClash 启动成功,请等待服务器上线!" >$START_LOG - echo "${LOGTIME} OpenClash Start Successful" >> $LOG_FILE - sleep 5 - echo "" >$START_LOG - else - if [ "$rule_source" != 0 ] || [ "$enable_custom_clash_rules" != 0 ]; then - echo "错误: OpenClash 启动失败,尝试还原规则并重新启动 Clash 主程序..." >$START_LOG - echo "${LOGTIME} OpenClash Can Not Start, Try Use Backup Rules Start Again" >> $LOG_FILE - mv "$BACKUP_FILE" /etc/openclash/configrules.bak - sed -i -n '/^Rule:/,$p' /etc/openclash/configrules.bak - sed -i '/^Rule:/,$d' "$CONFIG_FILE" - cat /etc/openclash/configrules.bak >> "$CONFIG_FILE" - rm -rf /etc/openclash/configrules.bak - nohup $CLASH -d "$CLASH_CONFIG" >> $LOG_FILE 2>&1 & - sleep 3 - if pidof clash >/dev/null; then - add_cron - echo "OpenClash 使用备份规则启动成功,请更新、检查变动的规则后重试!" >$START_LOG - echo "${LOGTIME} OpenClash Start Successful With Backup Rules Config, Please Check Or Update Other Rules And Retry" >> $LOG_FILE - sleep 5 - echo "" >$START_LOG + /etc/init.d/firewall restart >/dev/null 2>&1 + /etc/init.d/miniupnpd restart >/dev/null 2>&1 + + echo "第八步: 重启 Dnsmasq 程序..." >$START_LOG + if [ "$(iptables -t nat -nL PREROUTING --line-number |grep dpt:53 |wc -l)" -gt 2 ]; then + echo "发现53端口被劫持,请将OpenClash设置为劫持53端口程序的上游DNS服务器!" >$START_LOG + echo "${LOGTIME} Warring: OpenClash May Can Not Take Over DNS, Please Use OpenClash for Upstream DNS Resolve Server" >> $LOG_FILE + sleep 5 + fi + [ "$enable_redirect_dns" != "0" ] && { + change_dns + } + fake_block "$en_mode" "$direct_dns" + /etc/init.d/dnsmasq restart >/dev/null 2>&1 + if pidof clash >/dev/null; then + echo "第九步: 添加 OpenClash 计划任务,启动进程守护程序..." >$START_LOG + add_cron + echo "OpenClash 启动成功,请等待服务器上线!" >$START_LOG + echo "${LOGTIME} OpenClash Start Successful" >> $LOG_FILE + sleep 5 + echo "" >$START_LOG + else + if [ "$rule_source" != 0 ] || [ "$enable_custom_clash_rules" != 0 ]; then + echo "错误: OpenClash 启动失败,尝试还原规则并重新启动 Clash 主程序..." >$START_LOG + echo "${LOGTIME} OpenClash Can Not Start, Try Use Backup Rules Start Again" >> $LOG_FILE + mv "$BACKUP_FILE" /etc/openclash/configrules.bak + sed -i -n '/^Rule:/,$p' /etc/openclash/configrules.bak + sed -i '/^Rule:/,$d' "$CONFIG_FILE" + cat /etc/openclash/configrules.bak >> "$CONFIG_FILE" + rm -rf /etc/openclash/configrules.bak + nohup $CLASH -d "$CLASH_CONFIG" >> $LOG_FILE 2>&1 & + sleep 3 + if pidof clash >/dev/null; then + add_cron + echo "OpenClash 使用备份规则启动成功,请更新、检查变动的规则后重试!" >$START_LOG + echo "${LOGTIME} OpenClash Start Successful With Backup Rules Config, Please Check Or Update Other Rules And Retry" >> $LOG_FILE + sleep 5 + echo "" >$START_LOG + else + echo "错误: OpenClash 启动失败,请到日志页面查看详细错误信息!" >$START_LOG + echo "${LOGTIME} OpenClash Can Not Start, Please Check The Error Info And Try Again" >> $LOG_FILE + sleep 10 + echo "" >$START_LOG + stop && echo "" >$START_LOG + fi else echo "错误: OpenClash 启动失败,请到日志页面查看详细错误信息!" >$START_LOG echo "${LOGTIME} OpenClash Can Not Start, Please Check The Error Info And Try Again" >> $LOG_FILE @@ -460,17 +470,10 @@ fi echo "" >$START_LOG stop && echo "" >$START_LOG fi - else - echo "错误: OpenClash 启动失败,请到日志页面查看详细错误信息!" >$START_LOG - echo "${LOGTIME} OpenClash Can Not Start, Please Check The Error Info And Try Again" >> $LOG_FILE - sleep 10 - echo "" >$START_LOG - stop && echo "" >$START_LOG fi fi fi rm -rf $START_BACKUP 2>/dev/null - fi else subscribe_url=$(uci get openclash.config.subscribe_url 2>/dev/null) if [ ! -f "$CONFIG_FILE" ] && [ ! -z "$subscribe_url" ]; then diff --git a/package/cnsztl/luci-app-openclash/files/etc/openclash/default.yaml b/package/cnsztl/luci-app-openclash/files/etc/openclash/default.yaml index 3bd48e814f..14c4e9fa75 100644 --- a/package/cnsztl/luci-app-openclash/files/etc/openclash/default.yaml +++ b/package/cnsztl/luci-app-openclash/files/etc/openclash/default.yaml @@ -43,24 +43,27 @@ authentication: # 此项将被接管 - "user1:pass1" - "user2:pass2" +# # experimental hosts, support wildcard (e.g. *.clash.dev Even *.foo.*.example.com) +# # static domain has a higher priority than wildcard domain (foo.example.com > *.example.com) +#hosts: +#'*.clash.dev': 127.0.0.1 +#'alpha.clash.dev': '::1' + dns: # 如订阅配置无包括此项的所有DNS设置,OpenClash将自动添加 enable: true # set true to enable dns (default is false) # 此项将被接管为true ipv6: false # default is false # 此项将被接管 listen: 0.0.0.0:53 # 端口为53时将被接管为7874 enhanced-mode: redir-host # or fake-ip # 此项将被接管 fake-ip-range: 198.18.0.1/16 # if you don't know what it is, don't change it # 此项将被接管 -# experimental hosts, support wildcard (e.g. *.clash.dev Even *.foo.*.example.com) -# static domain has a higher priority than wildcard domain (foo.example.com > *.example.com) -# NOTE: hosts don't work with `fake-ip` -# hosts: # 此项将被接管 -# '*.clash.dev': 127.0.0.1 -# 'alpha.clash.dev': '::1' nameserver: - 114.114.114.114 - - tls://dns.rubyfish.cn:853 # dns over tls - https://1.1.1.1/dns-query # dns over https fallback: # concurrent request with nameserver, fallback used when GEOIP country isn't CN - tcp://1.1.1.1 + fallback-filter: + geoip: true # default + ipcidr: # ips in these subnets will be considered polluted + - 240.0.0.0/4 # 以上设置您可直接覆盖到配置文件,无需更改 # Openclash 不会对下方服务器设置进行任何更改,请确保设置正确 @@ -68,17 +71,20 @@ dns: # 如订阅配置无包括此项的所有DNS设置,OpenClash将自动添 Proxy: # 此参数必须保留,不能删除 # shadowsocks -# The types of cipher are consistent with go-shadowsocks2 -# support AEAD_AES_128_GCM AEAD_AES_192_GCM AEAD_AES_256_GCM AEAD_CHACHA20_POLY1305 AES-128-CTR AES-192-CTR AES-256-CTR AES-128-CFB AES-192-CFB AES-256-CFB CHACHA20-IETF XCHACHA20 -# In addition to what go-shadowsocks2 supports, it also supports chacha20 rc4-md5 xchacha20-ietf-poly1305 -- { name: "ss1", type: ss, server: server, port: 443, cipher: AEAD_CHACHA20_POLY1305, password: "password", udp: true } +# The supported ciphers(encrypt methods): +# aes-128-gcm aes-192-gcm aes-256-gcm +# aes-128-cfb aes-192-cfb aes-256-cfb +# aes-128-ctr aes-192-ctr aes-256-ctr +# rc4-md5 chacha20 chacha20-ietf xchacha20 +# chacha20-ietf-poly1305 xchacha20-ietf-poly1305 +- { name: "ss1", type: ss, server: server, port: 443, cipher: chacha20-ietf-poly1305, password: "password", udp: true } # old obfs configuration remove after prerelease - name: "ss2" type: ss server: server port: 443 - cipher: AEAD_CHACHA20_POLY1305 + cipher: chacha20-ietf-poly1305 password: "password" plugin: obfs plugin-opts: @@ -89,7 +95,7 @@ Proxy: # 此参数必须保留,不能删除 type: ss server: server port: 443 - cipher: AEAD_CHACHA20_POLY1305 + cipher: chacha20-ietf-poly1305 password: "password" plugin: v2ray-plugin plugin-opts: diff --git a/package/cnsztl/luci-app-openclash/files/etc/openclash/openclash_version b/package/cnsztl/luci-app-openclash/files/etc/openclash/openclash_version index 76fbb8466b..b0f75a9f9c 100644 --- a/package/cnsztl/luci-app-openclash/files/etc/openclash/openclash_version +++ b/package/cnsztl/luci-app-openclash/files/etc/openclash/openclash_version @@ -1,2 +1,2 @@ -v0.34.2-beta -data:image/png;base64,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 \ No newline at end of file +v0.34.4-beta +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWoAAAAqCAMAAACtKeEJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjgxQkY5MzdERDk3QTExRTlBREM2RDg2M0FBQ0YyOTQxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjgxQkY5MzdFRDk3QTExRTlBREM2RDg2M0FBQ0YyOTQxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODFCRjkzN0JEOTdBMTFFOUFEQzZEODYzQUFDRjI5NDEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6ODFCRjkzN0NEOTdBMTFFOUFEQzZEODYzQUFDRjI5NDEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7+hhsNAAADAFBMVEV5eXnR5vM9PT0HZ52VlZWUxeEIa6QGcKxFgKLg7/eKioqAgIBXpNGhoaEdcqJjlbEFaaJiYmLKysppaWnR0dEbhcEGVYIqjcZtbW0GXpEHVoQVapp0tNjOzs6enp45lckKcq3v9PcJZJjGxsaStckGbag1dpoJdbM/Pz+y0+YXgL2izOXn5+cHXIwidaUjhLxERER0p8RFkb1GRkYkeapUi6sjapKTu9OEhIQwk8uRkZGGv9+5ubmlpaWpqanAwMC1tbVycnLa2toEU4CCgoKsrKxlZWVLS0vf399kq9NBQUE2kcbg4OCxytiDqsFFmspXlblGibAEYJRCQkKkzubw9fehv9AGcrAHWom2trZ0dHTCwsI0fKUIYZR3d3e+vr4YbZ1Kn8+vr6+xzdwmcZ0GXI8FZZuixtuy1elJns5HnM1nrtaiyd9zobqjwNHQ3+cFdLMEXI6Crsfc3NwEYpgJWIWJweIXYoxDfqAmb5mhw9eDs89lp80KebgCc7QBcrNRUVFTU1NUVFRVVVUFdrdSUlILfL0HeLkKe7wGd7hWVlYEdrYOgMAEdbYDdLUDdbUOf8ADdLQSg8MSg8QShMQThMUAcrJXV1cOf78Nfr8Nfr4Mfb4Mfb0Je7sJersIebkIeboJero6OjqqqqrV1dWrq6vU1NRISEg7OzvC3u5JSUl+fn7B3u7q6urw9/udnZ2Evd2EvN1MTEzz8/OCqcDB1eD09PR/f3+DvNzB3e2Fvt719fXg6vDC3+/A1N9Gm8vW1taMjIzB3e6GhoYUXokHWIfg6u/D3++Fvd6ErMJHm8zR4OiDr8jB2+qDu9yEtNBynrjo6OjC3u9EmcqFvd2Dq8IFdLTC3Ouyz+Bjnr8lisTB1+NInc6ErcXB2eeAudk1jsLQ5PAab6CEuNYGXY8FZ58JaaB/uNjB1+Q1hrSEq8JkmLaXl5cOe7gnbZURgsMQgcIPgMFZWVlaWlpfX19bW1tcXFxeXl5NTU1PT09QUFBYWFhdXV1OTk7///////820RSCAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAAC+dJREFUeNrsVwlYVWUaPhxZBCFEBIFYFEVvinrzupALiFcCcUtDcUkmbaLIsijbc8aLst2amZolWgYERBCEi4qQqFmalqXt+VTWLDXobE4zFZOA8TLf///n3HvuvUg++TxOp8f3efjP973f9v/vOZwDUk/P/jXB7TrGxN/98HHqAVtPj9QzL7ld15j4Wz3gOo8eaX/yOX1j4m90gets0ppzepf61/rAA1LytzrHxH/rA9dJ316R+jLhRyD1f3QC6Ru944rUlw3jvtQJpP/qHVekvnxSP6ETSF/rHeOe1Al6lVoKSEk5+/+9CVLCxc4f98wF8MSQtdOmrXZlvwzxn+ZCfxmyenWv9atjXKjVeO2Z7w3pKzcENICjISXsq0tEWMrZ71n5Ml6+yMxxz14AXvwUvjFO5JDXxOF8/Z90kB5AL/VDbHjNhcpxYzSxaTnP9gk3qYNeBuKXR0evbAJSLlXqhIsW7BKkfq537MOSaxfd8BFsIVo2Bzj++uvrlgA5di6DpHevD6Eb8KILl+PGaOfte65PSOddkARMlTleiU85f4mYjarvWWmUjReZOe75XjEEGHk/oRkZWjpn3ReMffCAg/YCCe/ewIPoF124HDfGAZL6+T4huYmDV+T0mtRUk0FODbtYYcJmzw7SuFmzs75T6tlqjhOy1EYOqam3yygXqX/fG56LxPxl3kOHxvaHTUsPvf/+VWe8Y5e9jhcVai2OTwLcGmRgnSNHRQ5jQnJytFROjDBIajsZk+OUI+Aq9SBEybuF2Z2eev78NmwTHqCssweBBBxAP2fngUcP8Zd7EteoCgPOMrchizsCAw6hQenfgEO0BiXxjwEztZ3EV6KB9VTnansTN5u13O+p3fFVBQIhwBBhZcCroOB2/GMUc1YBMQUODI3dUESXDVNwpyA+xZKR/YECF+zD8Qf/gPdc2E/xXsx7tAPbPmVmhnjvk6kclTXyEFZGiHOxVOIMeqg7VHtTfkkJHU8NiHU561JVMgDzuJAUJdmG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 \ No newline at end of file diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua index 4d5dd6ac18..3e7b2abc7f 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua @@ -35,14 +35,14 @@ o.rmempty = false o = s:option(Value, "test_url", translate("Test URL")) o.default = "http://www.gstatic.com/generate_204" -o.rmempty = true +o.rmempty = false o:depends("type", "url-test") o:depends("type", "fallback") o:depends("type", "load-balance") o = s:option(Value, "test_interval", translate("Test Interval(s)")) o.default = "300" -o.rmempty = true +o.rmempty = false o:depends("type", "url-test") o:depends("type", "fallback") o:depends("type", "load-balance") diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers-config.lua b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers-config.lua index da9b3393ea..6259843101 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers-config.lua +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers-config.lua @@ -10,11 +10,6 @@ local sid = arg[1] local uuid = luci.sys.exec("cat /proc/sys/kernel/random/uuid") local encrypt_methods_ss = { - -- aead - "AEAD_AES_128_GCM", - "AEAD_AES_192_GCM", - "AEAD_AES_256_GCM", - "AEAD_CHACHA20_POLY1305", -- stream "rc4-md5", @@ -29,6 +24,7 @@ local encrypt_methods_ss = { "aes-256-gcm", "chacha20", "chacha20-ietf", + "xchacha20", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", } @@ -62,7 +58,7 @@ o:value("http", translate("HTTP(S)")) o.description = translate("Using incorrect encryption mothod may causes service fail to start") -o = s:option(Value, "name", translate("Alias")) +o = s:option(Value, "name", translate("Server Alias")) o.rmempty = false o = s:option(Value, "server", translate("Server Address")) @@ -75,7 +71,7 @@ o.rmempty = false o = s:option(Value, "password", translate("Password")) o.password = true -o.rmempty = true +o.rmempty = false o:depends("type", "ss") o = s:option(ListValue, "cipher", translate("Encrypt Method")) @@ -89,14 +85,14 @@ o.rmempty = true o:depends("type", "vmess") o = s:option(ListValue, "udp", translate("UDP Enable")) -o.rmempty = false +o.rmempty = true o.default = "false" o:value("true") o:value("false") o:depends("type", "ss") o = s:option(ListValue, "obfs", translate("obfs-mode")) -o.rmempty = false +o.rmempty = true o.default = "none" o:value("none") o:value("tls") @@ -105,7 +101,7 @@ o:value("websocket", translate("websocket (ws)")) o:depends("type", "ss") o = s:option(ListValue, "obfs_vmess", translate("obfs-mode")) -o.rmempty = false +o.rmempty = true o.default = "none" o:value("none") o:value("websocket", translate("websocket (ws)")) @@ -116,6 +112,7 @@ o.datatype = "host" o.rmempty = true o:depends("obfs", "tls") o:depends("obfs", "http") +o:depends("obfs", "websocket") o = s:option(Value, "custom", translate("ws-headers")) o.rmempty = true @@ -125,7 +122,7 @@ o:depends("obfs_vmess", "websocket") -- [[ WS部分 ]]-- -- WS路径 -o = s:option(Value, "path", translate("ws-Path")) +o = s:option(Value, "path", translate("ws-path")) o.rmempty = true o:depends("obfs", "websocket") o:depends("obfs_vmess", "websocket") @@ -161,7 +158,8 @@ o.rmempty = true o.default = "false" o:value("true") o:value("false") -o:depends("type", "vmess") +o:depends("obfs", "websocket") +o:depends("obfs_vmess", "websocket") o:depends("type", "socks5") o:depends("type", "http") @@ -171,7 +169,8 @@ o.rmempty = true o.default = "false" o:value("true") o:value("false") -o:depends("type", "vmess") +o:depends("obfs", "websocket") +o:depends("obfs_vmess", "websocket") o:depends("type", "socks5") o:depends("type", "http") diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers.lua b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers.lua index fda0b4ad77..36b506e914 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers.lua +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/servers.lua @@ -41,7 +41,17 @@ o.inputstyle = "apply" o.write = function() uci:set("openclash", "config", "enable", 1) uci:commit("openclash") - luci.sys.call("/usr/share/openclash/yml_proxys_set.sh >/dev/null 2>&1 &") + local refresh_config = uci:get("openclash", "config", "create_config") + if (refresh_config == "1") then + luci.sys.call("/usr/share/openclash/yml_proxys_set.sh >/dev/null 2>&1") + uci:delete_all("openclash", "servers", function(s) return true end) + uci:delete_all("openclash", "groups", function(s) return true end) + luci.sys.call("/usr/share/openclash/yml_groups_get.sh >/dev/null 2>&1") + luci.sys.call("/etc/init.d/openclash restart >/dev/null 2>&1 &") + else + luci.sys.call("/usr/share/openclash/yml_proxys_set.sh >/dev/null 2>&1") + luci.sys.call("/etc/init.d/openclash restart >/dev/null 2>&1 &") + end luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash")) end @@ -56,7 +66,7 @@ o.inputstyle = "apply" o.write = function() uci:delete_all("openclash", "servers", function(s) return true end) uci:delete_all("openclash", "groups", function(s) return true end) - luci.sys.call("sh /usr/share/openclash/yml_groups_get.sh 2>/dev/null") + luci.sys.call("sh /usr/share/openclash/yml_groups_get.sh 2>/dev/null") luci.http.redirect(luci.dispatcher.build_url("admin", "services", "openclash", "servers")) end @@ -123,7 +133,7 @@ function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end -o = s:option(DummyValue, "name", translate("Alias")) +o = s:option(DummyValue, "name", translate("Server Alias")) function o.cfgvalue(...) return Value.cfgvalue(...) or translate("None") end diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua index 2b18ac755e..34cf15a167 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua @@ -21,8 +21,9 @@ s:tab("geo_update", translate("GEOIP Update")) s:tab("version_update", translate("Version Update")) ---- General Settings +local cpu_model=SYS.exec("opkg status libc 2>/dev/null |grep 'Architecture' |awk -F ': ' '{print $2}' 2>/dev/null") o = s:taboption("settings", ListValue, "core_version", translate("Chose to Download")) -o.description = translate("For Core Update, Wrong Version Will Not Work") +o.description = translate("CPU Model")..': '..cpu_model..', '..translate("Select Based On Your CPU Model For Core Update, Wrong Version Will Not Work") o:value("linux-386") o:value("linux-amd64", translate("linux-amd64(x86-64)")) o:value("linux-armv5") @@ -242,6 +243,7 @@ o.inputstyle = "reload" o.write = function() uci:set("openclash", "config", "enable", 1) uci:commit("openclash") + SYS.call("rm -rf /etc/openclash/config.bak 2>/dev/null") SYS.call("sh /usr/share/openclash/openclash.sh >/dev/null 2>&1 &") HTTP.redirect(DISP.build_url("admin", "services", "openclash")) end diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/developer.htm b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/developer.htm index 36aa87f248..ae70254ee0 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/developer.htm +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/developer.htm @@ -43,7 +43,7 @@ } function binupdate_rediret() { - url5='https://github.com/Dreamacro/clash/releases'; + url5='https://github.com/vernesong/OpenClash/releases/tag/Clash'; window.open(url5); } function openupdate_rediret() diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm index 0938971299..da1db07dd4 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm @@ -14,7 +14,7 @@ - + @@ -142,7 +142,7 @@ 太平洋  国内:

- IPAPI   海外: + IP.SB    海外:

IPIFY    海外: @@ -184,7 +184,7 @@ $$.getElementById('ip-pcol').innerHTML = '查询中...'; $$.getElementById('ip-ipify').innerHTML = '查询中...'; $$.getElementById('ip-ipipnet').innerHTML = '查询中...'; - $$.getElementById('ip-ipapi').innerHTML = '查询中...'; + $$.getElementById('ip-ipsb').innerHTML = '查询中...'; let random = parseInt(Math.random() * 100000000); let IP = { get: (url, type) => @@ -246,7 +246,6 @@ $$.getElementById('ip-ipipnet-geo').innerHTML = `${data[1]}`; }); }, - getIPApiIP: () => { IP.get(`https://ipapi.co/json?z=${random}`, 'json') .then(resp => { @@ -303,13 +302,16 @@ HTTP.runcheck(); IP.getIpipnetIP(); IP.getIpifyIP(); - IP.getIPApiIP(); IP.getWebrtcIP(); function getPcolIP(data){ $$.getElementById('ip-pcol').innerHTML = data.ip; IP.parseIPIpip(data.ip, 'ip-pcol-ipip'); }; + function getIpsbIP(data){ + $$.getElementById('ip-ipsb').innerHTML = data.address; + $$.getElementById('ip-ipsb-geo').innerHTML = `${data.country} ${data.province} ${data.city} ${data.isp.name}` + }; window.onload=myip_Load(); @@ -321,19 +323,25 @@ pcipScript.src='https://whois.pconline.com.cn/ipJson.jsp?callback=getPcolIP'; pcip.appendChild(pcipScript); + var sbip = document.getElementsByTagName('HEAD').item(0); + var sbipScript= document.createElement("script"); + sbipScript.defer = "defer"; + sbipScript.src='https://ip.sb/addrinfo?callback=getIpsbIP'; + sbip.appendChild(sbipScript); + const $$ = document; random = parseInt(Math.random() * 100000000); HTTP.runcheck(); IP.getIpipnetIP(); IP.getIpifyIP(); - IP.getIPApiIP(); IP.getWebrtcIP(); - setTimeout("myip_Load()",1000*8); + setTimeout("myip_Load()",1000*20); } + diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm index b185601aca..1a785fefa8 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm @@ -1,7 +1,11 @@

- + diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm index e1536bf65a..cb048faae5 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm @@ -1,9 +1,30 @@
一些必要的状态显示,运行前请确保各项目显示正常,需要更新请到接管设置页面操作
+

+ 一些必要的状态显示,运行前请确保各项目显示正常,需要更新请到全局设置页面操作 +

+
启动参数检查(配置文件) <%:Collecting data...%> 配置文件更新日期 <%:Collecting data...%>
GEOIP(By MaxMind)数据库日期 <%:Collecting data...%> lhie1 规则更新日期 <%:Collecting data...%>
ConnersHua 规则更新日期 <%:Collecting data...%> ConnersHua 回国规则更新日期 <%:Collecting data...%>
- - - - + + + + @@ -85,10 +106,28 @@ window.open(url3); } + function wikipage() + { + url5='https://github.com/vernesong/OpenClash/wiki'; + window.open(url5); + } + + function telegrampage() + { + url6='https://telegram.clash.dev'; + window.open(url6); + } + + function sponsorpage() + { + url7='https://github.com/vernesong/OpenClash/wiki/Sponsor'; + window.open(url7); + } + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "currentversion")%>', status.currentversion, function(x, status) { if ( x && x.status == 200 ) { - clashversion.innerHTML = 'currentversion'; + clashversion.innerHTML = 'currentversion'; } }); @@ -98,11 +137,18 @@ function clashversion_check() if ( x && x.status == 200 ) { if ( status.lastversion != "\n" && status.lastversion != "" ) { - clashversion.innerHTML = 'lastversion'; + clashversion.innerHTML = 'lastversion'; } } }); } + +function clashversion_error() + { + + clashversion.innerHTML = 'currentversion'; + + } function go_update() @@ -126,7 +172,7 @@ function go_update() } if(rdmdl==3) { - startlog.innerHTML = '<%: Tip: 切换 Fake-IP 模式无需更改客户端的DNS服务器 %>'; + startlog.innerHTML = '<%: Tip: 不会编写配置文件?试试在【服务器&策略组】页面一键创建 %>'; } if(rdmdl==4) { @@ -162,7 +208,7 @@ function go_update() } if(rdmdl==12) { - startlog.innerHTML = '<%: Tip: 您可以在接管设置页面进行版本更新操作 %>'; + startlog.innerHTML = '<%: Tip: 您可以在全局设置页面进行版本更新操作 %>'; } } } diff --git a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm index a4dc959e87..2214368990 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm +++ b/package/cnsztl/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm @@ -33,7 +33,7 @@ core_version.innerHTML = ""+status.corever+""; } else { - core_version.innerHTML = "<%:未选择编译版本,请到全局设置中配置%>"; + core_version.innerHTML = "<%:未选择编译版本,请到常规设置标签中配置%>"; } if ( status.upchecktime != "1" ) { checktime.innerHTML = ""+status.upchecktime+""; @@ -80,7 +80,7 @@ core_version.innerHTML = ""+status.corever+""; } else { - core_version.innerHTML = "<%:未选择编译版本,请到全局设置中配置%>"; + core_version.innerHTML = "<%:未选择编译版本,请到常规设置标签中配置%>"; } if ( status.upchecktime != "1" ) { checktime.innerHTML = ""+status.upchecktime+""; @@ -158,7 +158,7 @@ window.open(url1); } else { - alert('未选择编译版本,请到全局设置中配置!') + alert('未选择编译版本,请到常规设置标签中配置!') } } }); diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/index.html b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/index.html index 050681c909..308ffdca4b 100644 --- a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/index.html +++ b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/index.html @@ -5,8 +5,8 @@ Clash - +
- + diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.45da5278717379ab5871.min.js b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.b2b352082cb77749cd2e.min.js similarity index 100% rename from package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.45da5278717379ab5871.min.js rename to package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.b2b352082cb77749cd2e.min.js diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.45da5278717379ab5871.min.js b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.45da5278717379ab5871.min.js deleted file mode 100644 index 6e38b3fab9..0000000000 --- a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/dashboard/js/bundle.45da5278717379ab5871.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){function t(t){for(var r,l,i=t[0],u=t[1],s=t[2],f=0,d=[];fl[0]&&n[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getLocalStorageItem=function(e,t){return void 0===t&&(t=""),window.localStorage.getItem(e)||t},t.setLocalStorageItem=function(e,t){return window.localStorage.setItem(e,t)},t.removeLocalStorageItem=function(e){return window.localStorage.removeItem(e)},t.noop=function(){},t.to=function(e){return r(this,void 0,void 0,function(){return a(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,e];case 1:return[2,[t.sent(),null]];case 2:return[2,[null,t.sent()]];case 3:return[2]}})})},t.partition=function(e,t){var n,r,a=[],l=[];try{for(var i,u=o(e),s=u.next();!s.done;s=u.next())t(i=s.value)?a.push(i):l.push(i)}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}return[a,l]}},function(e,t,n){"use strict";function r(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),r(n(125)),r(n(127)),r(n(128)),r(n(130)),r(n(132)),r(n(134)),r(n(135)),r(n(137)),r(n(139)),r(n(141)),r(n(143)),r(n(145)),r(n(147)),r(n(149))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}(n(55))},,function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function l(e){try{u(r.next(e))}catch(e){o(e)}}function i(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){e.done?a(e.value):new n(function(t){t(e.value)}).then(l,i)}u((r=r.apply(e,t||[])).next())})},a=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(a)throw new TypeError("Generator is already executing.");for(;u;)try{if(a=1,o&&(l=2&n[0]?o.return:n[0]?o.throw||((l=o.return)&&l.call(o),0):o.next)&&!(l=l.call(o,n[1])).done)return l;switch(o=0,l&&(n=[2&n[0],l.value]),n[0]){case 0:case 1:l=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,o=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(!(l=0<(l=u.trys).length&&l[l.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!l||n[1]>l[0]&&n[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var o=n(74),l=n(75);t.useObject=function(e){var t=r(o.useImmer(e),2),n=t[0],l=t[1];return{value:n,setSingle:function(e,t){l(function(n){n[e]=t})},setMulti:function(e){l(function(t){var n,r;try{for(var o,l=a(Object.keys(e)),i=l.next();!i.done;i=l.next())t[o=i.value]=e[o]}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}})},set:l}},t.composeContainer=function(e){var t=l.createContainer(function(){return Object.keys(e).reduce(function(t,n){return t[n]=e[n](),t},{})});return{Provider:t.Provider,containers:Object.keys(e).reduce(function(e,n){return e[n]=function(){return t.useContainer()[n]},e},{})}}},,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a,o=r(n(38));(a=t.Action||(t.Action={})).SPEED_NOTIFY="speed-notify";var l=function(){function e(){this.EE=new o.default}return e.prototype.notifySpeedTest=function(){this.EE.emit(a.SPEED_NOTIFY)},e.prototype.subscribe=function(e,t){this.EE.addListener(e,t)},e.prototype.unsubscribe=function(e,t){this.EE.removeListener(e,t)},e}();t.default=new l},,,function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(46)),o=n(10);o.isClashX()?o.setupJsBridge(a.default):a.default()},function(e,t,n){"use strict";var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(0)),l=n(12),i=n(23),u=n(7),s=a(n(121));t.default=function(){var e=document.getElementById("root"),t=o.createElement(u.Provider,null,o.createElement(i.HashRouter,null,o.createElement(s.default,null)));l.render(t,e)}},,,,,,,,,function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;nl[0]&&n[1]l[0]&&n[1]this.config.bufferLength&&this.innerBuffer.splice(0,this.innerBuffer.length-this.config.bufferLength)),[3,2]);case 4:return[2]}})})},e.prototype.retry=function(e){this.isClose||(this.EE.emit("error",e),window.setTimeout(this.loop,this.config.retryInterval))},e.prototype.subscribe=function(e,t){this.EE.addListener(e,t)},e.prototype.unsubscribe=function(e,t){this.EE.removeListener(e,t)},e.prototype.buffer=function(){return this.innerBuffer.slice()},e.prototype.destory=function(){this.EE.removeAllListeners(),this.isClose=!0},e}();t.StreamReader=c},,,function(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}},a=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),l=[];try{for(;(void 0===t||0l[0]&&n[1]l[0]&&n[1]l[0]&&n[1]l[0]&&n[1]l[0]&&n[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0}),t.getLocalStorageItem=function(e,t){return void 0===t&&(t=""),window.localStorage.getItem(e)||t},t.setLocalStorageItem=function(e,t){return window.localStorage.setItem(e,t)},t.removeLocalStorageItem=function(e){return window.localStorage.removeItem(e)},t.noop=function(){},t.to=function(e){return r(this,void 0,void 0,function(){return a(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,e];case 1:return[2,[t.sent(),null]];case 2:return[2,[null,t.sent()]];case 3:return[2]}})})},t.partition=function(e,t){var n,r,a=[],l=[];try{for(var i,u=o(e),s=u.next();!s.done;s=u.next())t(i=s.value)?a.push(i):l.push(i)}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}return[a,l]}},function(e,t,n){"use strict";function r(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),r(n(125)),r(n(127)),r(n(128)),r(n(130)),r(n(132)),r(n(134)),r(n(135)),r(n(137)),r(n(139)),r(n(141)),r(n(143)),r(n(145)),r(n(147)),r(n(149))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}(n(55))},,function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function l(e){try{u(r.next(e))}catch(e){o(e)}}function i(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){e.done?a(e.value):new n(function(t){t(e.value)}).then(l,i)}u((r=r.apply(e,t||[])).next())})},a=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(a)throw new TypeError("Generator is already executing.");for(;u;)try{if(a=1,o&&(l=2&n[0]?o.return:n[0]?o.throw||((l=o.return)&&l.call(o),0):o.next)&&!(l=l.call(o,n[1])).done)return l;switch(o=0,l&&(n=[2&n[0],l.value]),n[0]){case 0:case 1:l=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,o=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(!(l=0<(l=u.trys).length&&l[l.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!l||n[1]>l[0]&&n[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var o=n(74),l=n(75);t.useObject=function(e){var t=r(o.useImmer(e),2),n=t[0],l=t[1];return{value:n,setSingle:function(e,t){l(function(n){n[e]=t})},setMulti:function(e){l(function(t){var n,r;try{for(var o,l=a(Object.keys(e)),i=l.next();!i.done;i=l.next())t[o=i.value]=e[o]}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}})},set:l}},t.composeContainer=function(e){var t=l.createContainer(function(){return Object.keys(e).reduce(function(t,n){return t[n]=e[n](),t},{})});return{Provider:t.Provider,containers:Object.keys(e).reduce(function(e,n){return e[n]=function(){return t.useContainer()[n]},e},{})}}},,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a,o=r(n(38));(a=t.Action||(t.Action={})).SPEED_NOTIFY="speed-notify";var l=function(){function e(){this.EE=new o.default}return e.prototype.notifySpeedTest=function(){this.EE.emit(a.SPEED_NOTIFY)},e.prototype.subscribe=function(e,t){this.EE.addListener(e,t)},e.prototype.unsubscribe=function(e,t){this.EE.removeListener(e,t)},e}();t.default=new l},,,function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(46)),o=n(10);o.isClashX()?o.setupJsBridge(a.default):a.default()},function(e,t,n){"use strict";var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(0)),l=n(12),i=n(23),u=n(7),s=a(n(121));t.default=function(){var e=document.getElementById("root"),t=o.createElement(u.Provider,null,o.createElement(i.HashRouter,null,o.createElement(s.default,null)));l.render(t,e)}},,,,,,,,,function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;nl[0]&&n[1]l[0]&&n[1]this.config.bufferLength&&this.innerBuffer.splice(0,this.innerBuffer.length-this.config.bufferLength)),[3,2]);case 4:return[2]}})})},e.prototype.retry=function(e){this.isClose||(this.EE.emit("error",e),window.setTimeout(this.loop,this.config.retryInterval))},e.prototype.subscribe=function(e,t){this.EE.addListener(e,t)},e.prototype.unsubscribe=function(e,t){this.EE.removeListener(e,t)},e.prototype.buffer=function(){return this.innerBuffer.slice()},e.prototype.destory=function(){this.EE.removeAllListeners(),this.isClose=!0},e}();t.StreamReader=c},,,function(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}},a=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),l=[];try{for(;(void 0===t||0l[0]&&n[1]l[0]&&n[1]l[0]&&n[1]l[0]&&n[1]/dev/null + else + if [ ! -z "$(grep '^ \{1,\}hosts:' $7)" ]; then + sed -i '/^ \{1,\}hosts:/d' "$7" 2>/dev/null + sed -i '/^dns:/i\hosts:' "$7" 2>/dev/null + fi + fi + sed -i "s/^ \{0,\}/ /" "$12" 2>/dev/null #修改参数空格 + sed -i "1i\##Custom HOSTS##" "$12" 2>/dev/null + echo "##Custom HOSTS END##" >>"$12" 2>/dev/null + sed -i '/##Custom HOSTS##/,/##Custom HOSTS END##/d' "$7" 2>/dev/null + sed -i '/^hosts:/r/etc/config/openclash_custom_hosts.list' "$7" 2>/dev/null + sed -i '/##Custom HOSTS##/d' "$12" 2>/dev/null + sed -i '/##Custom HOSTS END##/d' "$12" 2>/dev/null + else + sed -i '/##Custom HOSTS##/,/##Custom HOSTS END##/d' "$7" 2>/dev/null + sed -i '/^ *$/d' "$7" 2>/dev/null #删除空行 + hostlen=$(sed -n '/hosts:/=' "$7" 2>/dev/null) + lasthlen=$(sed -n '$=' "$7" 2>/dev/null) #兼容旧版本 + dnslen=$(sed -n '/dns:/=' "$7" 2>/dev/null) + if [ "$hostlen" = "$lasthlen" ] && [ ! -z "$hostlen" ]; then + sed -i '/^ \{0,\}hosts:/d' "$7" 2>/dev/null + fi + if [ "$hostlen" = "$(expr $dnslen - 1)" ] && [ ! -z "$hostlen" ]; then + sed -i '/^ \{0,\}hosts:/d' "$7" 2>/dev/null + fi + fi \ No newline at end of file diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh index 71b35c676b..d559eeb175 100755 --- a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh +++ b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_get.sh @@ -42,9 +42,9 @@ do #name group_name=$(grep "name:" $single_group |awk -F 'name:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #test_url - group_test_url=$(grep "url:" $single_group |awk -F 'url:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + group_test_url=$(grep "url:" $single_group |awk -F 'url:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #test_interval - group_test_interval=$(grep "interval:" $single_group |awk -F 'interval:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + group_test_interval=$(grep "interval:" $single_group |awk -F 'interval:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_set.sh b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_set.sh index 54c164b6c1..12ed2fa904 100755 --- a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_set.sh +++ b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_groups_set.sh @@ -53,6 +53,10 @@ yml_groups_set() return fi + if [ -z "$test_url" ] || [ -z "$test_interval" ] && [ "$type" != "select" ]; then + return + fi + echo "- name: $name" >>$GROUP_FILE echo " type: $type" >>$GROUP_FILE echo " proxies:" >>$GROUP_FILE diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_get.sh b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_get.sh index 702a4ec143..cf74d74bc7 100755 --- a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_get.sh +++ b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_get.sh @@ -44,11 +44,11 @@ do #port port=$(grep "port:" $single_server |awk -F 'port:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #cipher - cipher=$(grep "cipher:" $single_server |awk -F 'cipher:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + cipher=$(grep "cipher:" $single_server |awk -F 'cipher:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #password - password=$(grep "password:" $single_server |awk -F 'password:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + password=$(grep "password:" $single_server |awk -F 'password:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #udp - udp=$(grep "udp:" $single_server |awk -F 'udp:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + udp=$(grep "udp:" $single_server |awk -F 'udp:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #plugin: plugin=$(grep "plugin:" $single_server |awk -F 'plugin:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #plugin-opts: @@ -60,9 +60,9 @@ do #mode: mode=$(grep "mode:" $single_server |awk -F 'mode:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #tls: - tls=$(grep "tls:" $single_server |sed 's/,.*//' |awk -F 'tls:' '{print $2}' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + tls=$(grep "tls:" $single_server |awk -F 'tls:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #skip-cert-verify: - verify=$(grep "skip-cert-verify:" $single_server |awk -F 'skip-cert-verify:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + verify=$(grep "skip-cert-verify:" $single_server |awk -F 'skip-cert-verify:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #host: host=$(grep "host:" $single_server |awk -F 'host:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #Host: @@ -70,15 +70,15 @@ do #path: path=$(grep "path:" $single_server |awk -F 'path:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #ws-path: - ws_path=$(grep "ws-path:" $single_server |awk -F 'ws-path:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + ws_path=$(grep "ws-path:" $single_server |awk -F 'ws-path:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #headers_custom: - headers=$(grep "custom:" $single_server |awk -F 'custom:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + headers=$(grep "custom:" $single_server |awk -F 'custom:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #uuid: uuid=$(grep "uuid:" $single_server |awk -F 'uuid:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #alterId: alterId=$(grep "alterId:" $single_server |awk -F 'alterId:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') #network - network=$(grep "network:" $single_server |awk -F 'network:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') + network=$(grep "network:" $single_server |awk -F 'network:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g' |sed 's/ \{0,\}\}$//g' 2>/dev/null) #username username=$(grep "username:" $single_server |awk -F 'username:' '{print $2}' |sed 's/,.*//' |sed 's/\"//g' |sed 's/^ \{0,\}//g') diff --git a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_set.sh b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_set.sh index bf8f827c9d..b2c3354775 100755 --- a/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_set.sh +++ b/package/cnsztl/luci-app-openclash/files/usr/share/openclash/yml_proxys_set.sh @@ -40,13 +40,12 @@ yml_servers_set() return fi - if [ -z "$port" ]; then return fi - if [ ! -z "$udp" ] && [ -z "$obfs" ]; then - udp=", udp: $udp" + if [ -z "$password" ] && [ "$type" = "ss" ]; then + return fi if [ "$obfs" != "none" ]; then @@ -55,19 +54,16 @@ yml_servers_set() else obfss="plugin: obfs" fi - else - obfs="" + fi + + if [ ! -z "$udp" ] && [ "$obfs" = "none" ]; then + udp=", udp: $udp" fi if [ "$obfs_vmess" != "none" ]; then - if [ "$type" = "vmess" ] && [ "$obfs" = "websocket" ]; then obfs_vmess=", network: ws" - else - obfs_vmess="" - fi fi - if [ ! -z "$host" ]; then host="host: $host" fi @@ -112,12 +108,22 @@ cat >> "$SERVER_FILE" <<-EOF udp: $udp EOF fi - if [ ! -z "$obfss" ]; then +if [ ! -z "$obfss" ] && [ ! -z "$host" ]; then cat >> "$SERVER_FILE" <<-EOF $obfss plugin-opts: mode: $obfs $host +EOF + fi + if [ ! -z "$tls" ]; then +cat >> "$SERVER_FILE" <<-EOF + $tls +EOF + fi + if [ ! -z "$skip_cert_verify" ]; then +cat >> "$SERVER_FILE" <<-EOF + $skip_cert_verify EOF fi if [ ! -z "$path" ]; then @@ -303,7 +309,7 @@ fi if [ "$create_config" != "0" ]; then echo "Rule:" >>$SERVER_FILE uci commit openclash - cat $SERVER_FILE > "/etc/openclash/config.yaml" 2>/dev/null + cat "$SERVER_FILE" > "/etc/openclash/config.yaml" 2>/dev/null else echo "正在更新配置文件服务器节点信息..." >$START_LOG /usr/share/openclash/yml_groups_set.sh @@ -317,4 +323,3 @@ echo "配置文件更新完成!" >$START_LOG rm -rf $SERVER_FILE 2>/dev/null rm -rf /tmp/Proxy_Server 2>/dev/null rm -rf /tmp/yaml_groups.yaml 2>/dev/null -/etc/init.d/openclash restart >/dev/null 2>&1 & diff --git a/package/cnsztl/luci-app-openclash/i18n/zh-cn/openclash.zh-cn.po b/package/cnsztl/luci-app-openclash/i18n/zh-cn/openclash.zh-cn.po index b22f04eb14..f40f648ee3 100644 --- a/package/cnsztl/luci-app-openclash/i18n/zh-cn/openclash.zh-cn.po +++ b/package/cnsztl/luci-app-openclash/i18n/zh-cn/openclash.zh-cn.po @@ -21,7 +21,7 @@ msgid "Global Settings" msgstr "全局设置" msgid "General Settings" -msgstr "基本设置" +msgstr "常规设置" msgid "DNS Setting" msgstr "DNS设置" @@ -382,8 +382,8 @@ msgstr "<可更新>" msgid "Chose to Download" msgstr "选择内核编译版本" -msgid "For Core Update, Wrong Version Will Not Work" -msgstr "下载、更新内核前须设置,错误的版本将不能正常运行" +msgid "Select Based On Your CPU Model For Core Update, Wrong Version Will Not Work" +msgstr "请根据CPU架构选择以便下载、更新对应内核,错误的版本将不能正常运行" msgid "Update Core File" msgstr "更新内核" @@ -435,8 +435,8 @@ msgstr "只更新配置文件服务器节点信息" msgid "Type" msgstr "节点类型" -msgid "Alias" -msgstr "节点别名(请勿重名)" +msgid "Server Alias" +msgstr "别名(请勿重名)" msgid "Server Address" msgstr "服务器地址" @@ -466,7 +466,7 @@ msgid "obfs-mode" msgstr "传输协议" msgid "obfs-hosts" -msgstr "混淆参数" +msgstr "混淆参数(HOST)" msgid "Auth Username" msgstr "登录用户名" @@ -502,7 +502,7 @@ msgid "Choose The Operation Mode" msgstr "设置策略组挑选服务器节点的工作方式" msgid "Group Name" -msgstr "策略组别名(请勿重名)" +msgstr "别名(请勿重名)" msgid "Test URL" msgstr "检测地址(URL)" @@ -511,28 +511,28 @@ msgid "Test Interval(s)" msgstr "检测频率(秒)" msgid "Select" -msgstr "手动选择" +msgstr "手动选择(Select)" msgid "URL-Test" -msgstr "最低延迟" +msgstr "最低延迟(URL-Test)" msgid "Fallback" -msgstr "故障切换" +msgstr "故障切换(Fallback)" msgid "Load-Balance" -msgstr "负载均衡" +msgstr "负载均衡(Load-Balance)" msgid "Other Group" -msgstr "包含其他策略组" +msgstr "包含其他策略组(请勿重复添加)" msgid "The added Proxy Groups Must Exist" -msgstr "添加的策略组必须已创建" +msgstr "注意:修改配置文件前添加的策略组必须已创建" msgid "Proxy Group" -msgstr "添加到策略组" +msgstr "添加到策略组(请勿重复添加)" msgid "No Need Set when Config Create, The added Proxy Groups Must Exist" -msgstr "使用一键生成配置文件功能时无需设置,填写的策略组必须已创建" +msgstr "注意:使用一键生成配置文件功能时无需设置此项,修改配置文件前添加的策略组必须已创建"
<%:Collecting data...%>
Tip: OpenClash 成功启动后请耐心等待下方网站访问检查连接正常后再使用
+

+ +

+

+ <%:Collecting data...%> +

+
+

+ star +     + Wiki +     + Telegram +     + +

+
+

+ Tip: OpenClash 成功启动后请耐心等待下方网站访问检查连接正常后再使用 +

+
OpenClash 主程序 <%:Collecting data...%> 控制面板登录IP <%:Collecting data...%>
OpenClash 守护程序 <%:Collecting data...%> 控制面板登录端口 <%:Collecting data...%>
OpenClash 运行模式 <%:Collecting data...%> 控制面板登录密钥 <%:Collecting data...%>