From b0d1bb27bc250b61c46f93d9933ba50c420efa30 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 1 Oct 2020 13:44:39 +0800 Subject: [PATCH 1/4] OpenClash: bump to 0.40.7-beta --- package/ctcgfw/luci-app-openclash/Makefile | 2 +- .../luasrc/controller/openclash.lua | 23 +- .../luasrc/model/cbi/openclash/settings.lua | 6 + .../po/zh-cn/openclash.zh-cn.po | 8 +- .../root/etc/config/openclash | 1 + .../root/etc/init.d/openclash | 203 ++++++++++-------- .../openclash/dashboard/asset-manifest.json | 19 ++ .../img/ffac0fa1d89f15922b4594863b8b32e9.png | Bin 6115 -> 0 bytes .../usr/share/openclash/dashboard/index.html | 2 +- .../js/1.bundle.01d1a3c82895ade21dbf.min.js | 2 - .../js/bundle.01d1a3c82895ade21dbf.min.js | 1 - .../dashboard/main.01d1a3c82895ade21dbf.css | 28 --- .../openclash/dashboard/service-worker.js | 1 + .../static/css/main.83e4b341.chunk.css | 1 + .../dashboard/static/js/2.4c19c7e9.chunk.js | 2 + .../js/2.4c19c7e9.chunk.js.LICENSE.txt} | 0 .../static/js/main.33688145.chunk.js | 1 + .../static/js/runtime-main.fefd5bb9.js | 1 + .../dashboard/static/media/logo.45983944.png | Bin 0 -> 11748 bytes .../openclash/dashboard/workbox-8a532145.js | 1 + .../usr/share/openclash/openclash_core.sh | 41 ++-- .../usr/share/openclash/openclash_debug.sh | 10 +- .../usr/share/openclash/openclash_ipdb.sh | 16 +- .../usr/share/openclash/openclash_watchdog.sh | 8 + .../usr/share/openclash/res/openclash_version | 4 +- .../usr/share/openclash/yml_groups_set.sh | 2 +- 26 files changed, 236 insertions(+), 147 deletions(-) create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json delete mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/img/ffac0fa1d89f15922b4594863b8b32e9.png delete mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/js/1.bundle.01d1a3c82895ade21dbf.min.js delete mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/js/bundle.01d1a3c82895ade21dbf.min.js delete mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/main.01d1a3c82895ade21dbf.css create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/service-worker.js create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/css/main.83e4b341.chunk.css create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/2.4c19c7e9.chunk.js rename package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/{js/1.bundle.01d1a3c82895ade21dbf.min.js.LICENSE.txt => static/js/2.4c19c7e9.chunk.js.LICENSE.txt} (100%) create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/main.33688145.chunk.js create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/runtime-main.fefd5bb9.js create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/media/logo.45983944.png create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/workbox-8a532145.js diff --git a/package/ctcgfw/luci-app-openclash/Makefile b/package/ctcgfw/luci-app-openclash/Makefile index 32bab84eb1..e473474f85 100644 --- a/package/ctcgfw/luci-app-openclash/Makefile +++ b/package/ctcgfw/luci-app-openclash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-openclash -PKG_VERSION:=0.40.6 +PKG_VERSION:=0.40.7 PKG_RELEASE:=beta PKG_MAINTAINER:=vernesong diff --git a/package/ctcgfw/luci-app-openclash/luasrc/controller/openclash.lua b/package/ctcgfw/luci-app-openclash/luasrc/controller/openclash.lua index 1200635f54..cc3c1ff182 100644 --- a/package/ctcgfw/luci-app-openclash/luasrc/controller/openclash.lua +++ b/package/ctcgfw/luci-app-openclash/luasrc/controller/openclash.lua @@ -55,6 +55,17 @@ function index() end local fs = require "luci.openclash" +local core_path_mode = luci.sys.exec("uci get openclash.config.small_flash_memory 2>/dev/null |tr -d '\n'") +if core_path_mode ~= "1" then + dev_core_path="/etc/openclash/core/clash" + tun_core_path="/etc/openclash/core/clash_tun" + game_core_path="/etc/openclash/core/clash_game" +else + dev_core_path="/tmp/etc/openclash/core/clash" + tun_core_path="/tmp/etc/openclash/core/clash_tun" + game_core_path="/tmp/etc/openclash/core/clash_game" +end + local function is_running() return luci.sys.call("pidof clash >/dev/null") == 0 end @@ -143,26 +154,26 @@ local function coremodel() end local function corecv() -if not nixio.fs.access("/etc/openclash/core/clash") and not nixio.fs.access("/etc/openclash/clash") then +if not nixio.fs.access(dev_core_path) then return "0" else - return luci.sys.exec("/etc/openclash/core/clash -v 2>/dev/null |awk -F ' ' '{print $2}'") + return luci.sys.exec(string.format("%s -v 2>/dev/null |awk -F ' ' '{print $2}'",dev_core_path)) end end local function coretuncv() -if not nixio.fs.access("/etc/openclash/core/clash_tun") then +if not nixio.fs.access(tun_core_path) then return "0" else - return luci.sys.exec("/etc/openclash/core/clash_tun -v 2>/dev/null |awk -F ' ' '{print $2}'") + return luci.sys.exec(string.format("%s -v 2>/dev/null |awk -F ' ' '{print $2}'",tun_core_path)) end end local function coregamecv() -if not nixio.fs.access("/etc/openclash/core/clash_game") then +if not nixio.fs.access(game_core_path) then return "0" else - return luci.sys.exec("/etc/openclash/core/clash_game -v 2>/dev/null |awk -F ' ' '{print $2}'") + return luci.sys.exec(string.format("%s -v 2>/dev/null |awk -F ' ' '{print $2}'",game_core_path)) end end diff --git a/package/ctcgfw/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua b/package/ctcgfw/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua index 956324b1eb..45c9202849 100644 --- a/package/ctcgfw/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua +++ b/package/ctcgfw/luci-app-openclash/luasrc/model/cbi/openclash/settings.lua @@ -89,6 +89,12 @@ o:depends("en_mode", "redir-host-tun") o:depends("en_mode", "redir-host-vpn") o:depends("en_mode", "redir-host-mix") +o = s:taboption("op_mode", ListValue, "small_flash_memory", font_red..bold_on..translate("Small Flash Memory")..bold_off..font_off) +o.description = translate("Move Core And GEOIP Data File To /tmp/etc/openclash For Small Flash Memory Device") +o:value("0", translate("Disable")) +o:value("1", translate("Enable")) +o.default = "0" + ---- Operation Mode switch_mode = s:taboption("op_mode", DummyValue, "", nil) switch_mode.template = "openclash/switch_mode" diff --git a/package/ctcgfw/luci-app-openclash/po/zh-cn/openclash.zh-cn.po b/package/ctcgfw/luci-app-openclash/po/zh-cn/openclash.zh-cn.po index 36ebf10b19..f37b35cc53 100644 --- a/package/ctcgfw/luci-app-openclash/po/zh-cn/openclash.zh-cn.po +++ b/package/ctcgfw/luci-app-openclash/po/zh-cn/openclash.zh-cn.po @@ -1039,4 +1039,10 @@ msgid "Convert Subscribe Online With Template, Mix Proxies and Keep Settings opt msgstr "根据模板在线转换配置文件,混合节点和保留配置功能将不可用" msgid "Convert Subscribe function of Online is Supported By subconverter Written By tindy X" -msgstr "在线订阅转换功能由tindy X通过subconverter提供支持" \ No newline at end of file +msgstr "在线订阅转换功能由tindy X通过subconverter提供支持" + +msgid "Small Flash Memory" +msgstr "小闪存模式" + +msgid "Move Core And GEOIP Data File To /tmp/etc/openclash For Small Flash Memory Device" +msgstr "针对闪存空间不够的设备,移动内核和GEOIP数据库文件到 /tmp/etc/openclash 文件夹" \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/root/etc/config/openclash b/package/ctcgfw/luci-app-openclash/root/etc/config/openclash index 0e2c7f6aab..798f2501fc 100644 --- a/package/ctcgfw/luci-app-openclash/root/etc/config/openclash +++ b/package/ctcgfw/luci-app-openclash/root/etc/config/openclash @@ -28,6 +28,7 @@ config openclash 'config' option operation_mode 'redir-host' option enable_rule_proxy '0' option redirect_dns '0' + option small_flash_memory '0' config dns_servers option group 'nameserver' diff --git a/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash b/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash index be239cbafe..fae154059d 100644 --- a/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash +++ b/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash @@ -126,11 +126,6 @@ start_fail() yml_merge() { #合并文件 -if [ -z "$(grep "^Proxy:#d" "$PROXY_FILE")" ]; then - sed -i "s/^Proxy:/proxies:/g" "$PROXY_FILE" 2>/dev/null -else - sed -i "s/^Proxy:#d/proxies:/g" "$PROXY_FILE" 2>/dev/null -fi cat "$CHANGE_FILE" "$DNS_FILE" "$PROXY_PROVIDER_FILE" "$PROXY_FILE" "$GROUP_FILE" "$RULE_PROVIDER_FILE" "$SCRIPT_FILE" "$RULE_FILE" > "$CONFIG_FILE" 2>/dev/null } @@ -655,27 +650,35 @@ sed -i '/OpenClash-Game-Rules-End/d' "$RULE_FILE" 2>/dev/null sed -i '/OpenClash-Game-Rules/r/tmp/yaml_game_rule_group.yaml' "$RULE_FILE" 2>/dev/null } -yml_merge - #处理游戏节点与策略组 config_load "openclash" config_foreach yml_rule_group_get "rule_provider_config" config_foreach yml_rule_group_get "game_config" -sed -i '/^ \{0,\}proxy-groups:/r/tmp/yaml_groups.yaml' "$CONFIG_FILE" 2>/dev/null +sed -i '/^ \{0,\}proxy-groups:/r/tmp/yaml_groups.yaml' "$GROUP_FILE" 2>/dev/null sed -i '/^ \{0,\}Proxy:/d' /tmp/yaml_servers.yaml 2>/dev/null sed -i '/^ \{0,\}proxy-providers:/d' /tmp/yaml_provider.yaml 2>/dev/null -if [ -z "$(grep "^ \{0,\}Proxy:" "$CONFIG_FILE" 2>/dev/null)" ] && [ -f "/tmp/yaml_servers.yaml" ]; then - sed -i '/^ \{0,\}proxy-groups:/i\Proxy:' "$CONFIG_FILE" 2>/dev/null - sed -i '/^ \{0,\}Proxy:/r/tmp/yaml_servers.yaml' "$CONFIG_FILE" 2>/dev/null -elif [ -f "/tmp/yaml_servers.yaml" ]; then - sed -i '/^ \{0,\}Proxy:/r/tmp/yaml_servers.yaml' "$CONFIG_FILE" 2>/dev/null +if [ ! -f "$PROXY_FILE" ] && [ -f "/tmp/yaml_servers.yaml" ]; then + echo "Proxy:" > "$PROXY_FILE" 2>/dev/null + sed -i '/Proxy:/r/tmp/yaml_servers.yaml' "$PROXY_FILE" 2>/dev/null +elif [ -f "/tmp/yaml_servers.yaml" ] && [ -z "$(grep "^Proxy:#d" "$PROXY_FILE")" ]; then + sed -i '/^Proxy:/r/tmp/yaml_servers.yaml' "$PROXY_FILE" 2>/dev/null +elif [ -f "/tmp/yaml_servers.yaml" ] && [ -n "$(grep "^Proxy:#d" "$PROXY_FILE")" ]; then + sed -i '/^Proxy:#d/r/tmp/yaml_servers.yaml' "$PROXY_FILE" 2>/dev/null fi -if [ -z "$(grep "^ \{0,\}proxy-providers:" "$CONFIG_FILE" 2>/dev/null)" ] && [ -f "/tmp/yaml_provider.yaml" ]; then - sed -i '/OpenClash-General-Settings/a\proxy-providers:' "$CONFIG_FILE" 2>/dev/null - sed -i '/^ \{0,\}proxy-providers:/r/tmp/yaml_provider.yaml' "$CONFIG_FILE" 2>/dev/null +if [ ! -f "$PROXY_PROVIDER_FILE" ] && [ -f "/tmp/yaml_provider.yaml" ]; then + echo "proxy-providers:" > "$PROXY_PROVIDER_FILE" 2>/dev/null + sed -i '/proxy-providers:/r/tmp/yaml_provider.yaml' "$PROXY_PROVIDER_FILE" 2>/dev/null elif [ -f "/tmp/yaml_servers.yaml" ]; then - sed -i '/^ \{0,\}proxy-providers:r/tmp/yaml_provider.yaml' "$CONFIG_FILE" 2>/dev/null + sed -i '/^proxy-providers:r/tmp/yaml_provider.yaml' "$PROXY_PROVIDER_FILE" 2>/dev/null fi + +#关键字还原 +if [ -z "$(grep "^Proxy:#d" "$PROXY_FILE")" ]; then + sed -i "s/^Proxy:/proxies:/g" "$PROXY_FILE" 2>/dev/null +else + sed -i "s/^Proxy:#d/proxies:/g" "$PROXY_FILE" 2>/dev/null +fi + } yml_rule_set_add() @@ -962,13 +965,13 @@ if [ ! -f "$CONFIG_FILE" ]; then echo "配置文件不存在,您已设置订阅信息,准备开始下载..." >$START_LOG sleep 3 kill_clash - stop nohup /usr/share/openclash/openclash.sh & + exit 0 elif [ ! -f "$CONFIG_FILE" ]; then echo "错误: 缺少配置文件,请上传或更新配置文件!" >$START_LOG echo "${LOGTIME} Config Not Found" >> $LOG_FILE sleep 5 - start_fail + exit 0 fi fi } @@ -1009,84 +1012,105 @@ do_run_mode() fi } -do_run_core() +do_run_file() { - if [ ! -h "/etc/openclash/clash" ] && [ -s "/etc/openclash/clash" ] && [ ! -s "/etc/openclash/core/clash" ]; then - mv "/etc/openclash/clash" "/etc/openclash/core/clash" 2>/dev/null - fi + if [ "$small_flash_memory" != "1" ]; then + dev_core_path="/etc/openclash/core/clash" + tun_core_path="/etc/openclash/core/clash_tun" + game_core_path="/etc/openclash/core/clash_game" + geoip_path="/etc/openclash/Country.mmdb" + else + dev_core_path="/tmp/etc/openclash/core/clash" + tun_core_path="/tmp/etc/openclash/core/clash_tun" + game_core_path="/tmp/etc/openclash/core/clash_game" + geoip_path="/tmp/etc/openclash/Country.mmdb" + fi - rm -rf "/etc/openclash/clash" 2>/dev/null + rm -rf "/etc/openclash/clash" 2>/dev/null - if [ "$en_mode_tun" = "1" ] || [ "$en_mode_tun" = "3" ]; then - ln -s /etc/openclash/core/clash_tun /etc/openclash/clash 2>/dev/null - core_type="Tun" - echo "检测到配置了【Tun】内核专属功能,调用【Tun】内核启动..." >$START_LOG - sleep 1 - fi + if [ "$en_mode_tun" = "1" ] || [ "$en_mode_tun" = "3" ]; then + ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null + core_type="Tun" + core_start_log="检测到配置了【Tun】内核专属功能,调用【Tun】内核启动..." + fi - if [ "$en_mode_tun" = "2" ]; then - ln -s /etc/openclash/core/clash_game /etc/openclash/clash 2>/dev/null - core_type="Game" - echo "检测到配置了【Game】内核专属功能,调用【Game】内核启动..." >$START_LOG - sleep 1 - fi - - if [ "$proxy_mode" = "script" ] || [ "$rule_source" = "ConnersHua" ] || [ "$rule_source" = "lhie1" ]; then - ln -s /etc/openclash/core/clash_tun /etc/openclash/clash 2>/dev/null - core_type="Tun" - echo "检测到配置了【Tun】内核专属功能,调用【Tun】内核启动..." >$START_LOG - sleep 1 - fi + if [ "$en_mode_tun" = "2" ]; then + ln -s "$game_core_path" /etc/openclash/clash 2>/dev/null + core_type="Game" + core_start_log="检测到配置了【Game】内核专属功能,调用【Game】内核启动..." + fi - if [ -n "$(grep "^ \{0,\}rule-providers:" "$RULE_PROVIDER_FILE" 2>/dev/null)" ] && [ -n "$(grep "^ \{0,\}behavior" "$RULE_PROVIDER_FILE" 2>/dev/null |grep -v "^ \{0,\}#")" ]; then - ln -s /etc/openclash/core/clash_tun /etc/openclash/clash 2>/dev/null - core_type="Tun" - echo "检测到配置了【Tun】内核专属功能,调用【Tun】内核启动..." >$START_LOG - sleep 1 - fi + if [ "$proxy_mode" = "script" ] || [ "$rule_source" = "ConnersHua" ] || [ "$rule_source" = "lhie1" ]; then + ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null + core_type="Tun" + core_start_log="检测到配置了【Tun】内核专属功能,调用【Tun】内核启动..." + fi + + if [ -n "$(grep "^ \{0,\}rule-providers:" "$CONFIG_FILE" 2>/dev/null)" ] && [ -n "$(grep "^ \{0,\}behavior" "$CONFIG_FILE" 2>/dev/null |grep -v "^ \{0,\}#")" ]; then + ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null + core_type="Tun" + core_start_log="检测到配置了【Tun】内核专属功能,调用【Tun】内核启动..." + fi - if [ ! -f "/etc/openclash/clash" ] && [ -f "/etc/openclash/core/clash" ] && [ -z "$core_type" ]; then - ln -s /etc/openclash/core/clash /etc/openclash/clash 2>/dev/null - echo "未检测到特殊配置,调用【Dev】内核启动..." >$START_LOG - sleep 1 - fi + if [ ! -f "/etc/openclash/clash" ] && [ -f "$dev_core_path" ] && [ -z "$core_type" ]; then + ln -s "$dev_core_path" /etc/openclash/clash 2>/dev/null + core_start_log="未检测到特殊配置,调用【Dev】内核启动..." + fi - if [ ! -f "/etc/openclash/clash" ] && [ -f "/etc/openclash/core/clash_tun" ] && [ "$core_type" != "Game" ]; then - ln -s /etc/openclash/core/clash_tun /etc/openclash/clash 2>/dev/null - echo "检测到【Dev】内核未安装,调用【Tun】内核启动..." >$START_LOG - sleep 1 - fi + if [ ! -f "/etc/openclash/clash" ] && [ -f "$tun_core_path" ] && [ "$core_type" != "Game" ]; then + ln -s "$tun_core_path" /etc/openclash/clash 2>/dev/null + core_start_log="检测到【Dev】内核未安装,调用【Tun】内核启动..." + fi - if [ ! -f "/etc/openclash/clash" ] && [ -f "/etc/openclash/core/clash_game" ] && [ "$core_type" != "Tun" ]; then - ln -s /etc/openclash/core/clash_game /etc/openclash/clash 2>/dev/null - echo "检测到【Dev】内核未安装,调用【Game】内核启动..." >$START_LOG - sleep 1 - fi + if [ ! -f "/etc/openclash/clash" ] && [ -f "$game_core_path" ] && [ "$core_type" != "Tun" ]; then + ln -s "$game_core_path" /etc/openclash/clash 2>/dev/null + core_start_log="检测到【Dev】内核未安装,调用【Game】内核启动..." + fi #权限检查 - [ ! -x "/etc/openclash/core/clash_tun" ] && chmod 4755 /etc/openclash/core/clash_tun 2>/dev/null - [ ! -x "/etc/openclash/core/clash_game" ] && chmod 4755 /etc/openclash/core/clash_game 2>/dev/null - [ ! -x "/etc/openclash/core/clash" ] && chmod 4755 /etc/openclash/core/clash 2>/dev/null - - [ ! -f "$CLASH" ] && { - echo "检测到内核文件不存在,准备开始下载..." >$START_LOG - sleep 3 - rm -rf "/tmp/clash_last_version" 2>/dev/null + [ ! -x "$tun_core_path" ] && chmod 4755 "$tun_core_path" 2>/dev/null + [ ! -x "$game_core_path" ] && chmod 4755 "$game_core_path" 2>/dev/null + [ ! -x "$dev_core_path" ] && chmod 4755 "$dev_core_path" 2>/dev/null + + [ -f "$geoip_path" ] && [ "$small_flash_memory" = "1" ] && { + rm -rf "/etc/openclash/Country.mmdb" 2>/dev/null + ln -s "$geoip_path" /etc/openclash/Country.mmdb 2>/dev/null + } + + [ ! -f "$geoip_path" ] && { + echo "检测到GEOIP数据库文件不存在,准备开始下载..." >$START_LOG + sleep 3 + kill_clash + nohup /usr/share/openclash/openclash_ipdb.sh & + exit 0 + } + + [ ! -f "$CLASH" ] && { + echo "检测到内核文件不存在,准备开始下载..." >$START_LOG + sleep 3 + rm -rf "/tmp/clash_last_version" 2>/dev/null + kill_clash + nohup /usr/share/openclash/openclash_core.sh "$core_type" & + exit 0 + } + +} + +start_run_core() +{ + echo "$core_start_log" >$START_LOG + sleep 1 + ulimit -SHn 65535 2>/dev/null + config_reload=$(uci get openclash.config.config_reload 2>/dev/null) + if [ -n "$(pidof clash)" ] && [ "$core_type" != "Tun" ] && [ "$config_reload" != "0" ]; then + curl -s --connect-timeout 5 -m 5 -H 'Content-Type: application/json' -H "Authorization: Bearer ${da_password}" -XPUT http://"$lan_ip":"$cn_port"/configs -d "{\"path\": \"$CONFIG_FILE\"}" 2>/dev/null + else kill_clash - stop - nohup /usr/share/openclash/openclash_core.sh "$core_type" & - } - ulimit -SHn 65535 2>/dev/null - config_reload=$(uci get openclash.config.config_reload 2>/dev/null) - if [ -n "$(pidof clash)" ] && [ "$core_type" != "Tun" ] && [ "$config_reload" != "0" ]; then - curl -s --connect-timeout 5 -m 5 -H 'Content-Type: application/json' -H "Authorization: Bearer ${da_password}" -XPUT http://"$lan_ip":"$cn_port"/configs -d "{\"path\": \"$CONFIG_FILE\"}" 2>/dev/null - else - kill_clash - nohup "$CLASH" -d "$CLASH_CONFIG" -f "$CONFIG_FILE" >> $LOG_FILE 2>&1 & - fi - uci set openclash.config.config_reload=1 2>/dev/null - uci commit openclash + nohup "$CLASH" -d "$CLASH_CONFIG" -f "$CONFIG_FILE" >> $LOG_FILE 2>&1 & + fi + uci set openclash.config.config_reload=1 2>/dev/null + uci commit openclash } set_firewall() @@ -1437,6 +1461,7 @@ get_config() enable_rule_proxy=$(uci get openclash.config.enable_rule_proxy 2>/dev/null) stack_type=$(uci get openclash.config.stack_type 2>/dev/null) china_ip_route=$(uci get openclash.config.china_ip_route 2>/dev/null) + small_flash_memory=$(uci get openclash.config.small_flash_memory 2>/dev/null) } yml_field_check() @@ -1479,6 +1504,9 @@ start() echo "第一步: 获取配置..." >$START_LOG get_config + #检查文件是否存在 + do_run_file + echo "第二步: 配置文件检查..." >$START_LOG yml_check "$en_mode" "$enable_custom_dns" "$CONFIG_FILE" "$BACKUP_FILE" "$START_BACKUP" yml_dns_check @@ -1496,6 +1524,7 @@ start() yml_provider_path "$RULE_PROVIDER_FILE" "rule_provider" yml_custom_rule_provider yml_game_custom + yml_merge echo "第四步: DNS设置检查..." >$START_LOG if [ -n "$(sed -n '/^ \{0,\}nameserver:/{n;p}' "$CONFIG_FILE" |grep '^ \{0,\}fallback:')" ] || [ -n "$(sed -n '/^ \{0,\}nameserver:/{n;p}' "$CONFIG_FILE" |grep 'OpenClash-General')" ]; then @@ -1507,8 +1536,8 @@ start() fi echo "第五步: 启动主程序..." >$START_LOG - #检查是否存在核心文件 - do_run_core + sleep 1 + start_run_core #检测proxy_provider配置文件状态 echo "第六步: 等待主程序下载外部文件..." >$START_LOG diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json new file mode 100644 index 0000000000..a3dbb3cc0b --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json @@ -0,0 +1,19 @@ +{ + "files": { + "main.css": "./static/css/main.83e4b341.chunk.css", + "main.js": "./static/js/main.33688145.chunk.js", + "runtime-main.js": "./static/js/runtime-main.fefd5bb9.js", + "static/js/2.4c19c7e9.chunk.js": "./static/js/2.4c19c7e9.chunk.js", + "index.html": "./index.html", + "service-worker.js": "./service-worker.js", + "static/js/2.4c19c7e9.chunk.js.LICENSE.txt": "./static/js/2.4c19c7e9.chunk.js.LICENSE.txt", + "static/media/logo.45983944.png": "./static/media/logo.45983944.png", + "workbox-8a532145.js": "./workbox-8a532145.js" + }, + "entrypoints": [ + "static/js/runtime-main.fefd5bb9.js", + "static/js/2.4c19c7e9.chunk.js", + "static/css/main.83e4b341.chunk.css", + "static/js/main.33688145.chunk.js" + ] +} \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/img/ffac0fa1d89f15922b4594863b8b32e9.png b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/img/ffac0fa1d89f15922b4594863b8b32e9.png deleted file mode 100644 index 6798639d0f6c0e0656751c3c81e3a086242559e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6115 zcmbtYWn2{B*GC$qWkoKkuITd}ij(z2}~9oO9pId$_I|)ote61OxZGss&+kAw+SbchtX}u zsZ?NZZf=xIvHI;dK!8#yR=xmd*ogx^RV%TgA2IO8fAiw$7;qvQ*rnHslP|oM&c&)$ z{>uQssa9ZNQ~@CPis6)&8O0cZmx0ahZ(7^5z{LJ>}_8mCl- z0VD(H3dLAeBu1m=pERv{ERaVs8zU5dB^ZwujK>)F;@~Yfa3V$^4lS997D~7RC;nRk zTmmOyjJt6_LNUaZR5ludK#L*JKw5x+Y{5UEXDxVufLaw+vGku(0M5J*XVQ%`>HX&w zAX%{lW7Lh8&BG{{VN}X7KoX@=jC>(Rp$G%bLc=OB(m80r8~|6b7+{D6oL8&D0K3G~ z&@#Db?FOt)BUU0Eh(W7XVr28t@`Y&4S|AJqFp>V)fd9-oOG|0Qm+e9K01Pp7zfi?RuO@@;{^Ct^e$O)&gk9%H?BJDlnoSuhgrs z3dMl2S4Q2qXDv9$T&hvN1r1NadjAfuiRFK4A3QaRPByfZ+gP zpkvjmFwdHCnsxtrNxlH1RSy_~)~dtkG+?E3F&foau{2;F9oz3v0UU|LSNggJ1R!p0 zGHoKl`;=g|$j|4rx%IA}-LI9>9L&F5nEDUTeh#bthP)MjKgdXT7+QqozQPqF;~)FK zM1{d*&BZ<}Zpcr958q?d&WiMo`x@FiG7wsaBj4o$k54*|12NCL=2pkOe_X8p`qmq9 z1-5!_i(fo=`D-u!Yv%6Ode3U!n)kG*lD~otFcs-mai;2HCLdK`*bt6KQe3ds@CPm#+lxo!rBI3eL*T z#{LnPw)yckW9HzH$cFf2QG?~%f_zuqj^Dz-l3zl|j*xlneCq)!r#8QV3YQLr{x-vV z`PZ8B8MW-Vud_*0O|GHV*4EktsEwN|56qD#pw9Sb^j53X`Az4+E3ah9dbo6&7B+R} zi0|!`AjIX7CSq3n41{y;gz^?&SlN2quA4SYG)wgr?>PTj@t-HU#@9beN}@@!S@3w* zSZTESB2wWo+A8qV4#;9PF)1H%@O(l3ho*TbA1kGt9nDqUZU3Mkmmn9Hx}mziPc3rn zpZg}sVk_1N{ap4INqxfg99HcgWoUB;+j_PV8?Ghl=15$8*VVa0>)|bSpE64P=dERF zIiXi1ug@P&WL@o2$mUgYeP$(Dn|fb7s7)*Mbct+e@&(UA{@ZEl zlTOv#TUtAg=*b)Lk&q~)QbKrNrdzfA-yGIepXnvNf!vG?o^<)2U!z*_M;zt;`5gi0 z)0v{_iPo|$SUgAI#PNq0UAKB3Jtz{nyiAJ6jglTyGgWd$kt~T^=hb!w?dy|`m$M2A z3Qp}VISXaY_@Gj(F=&GcS)Vo9kr;9(tQ|+gtL>!hYPA`&wUKs-C)@tgM2> z3)78k3ESQ%EVMh8JVM$4@v)DyY0S|Mp(&O7WuE!cR6#!M;`HfNkdK&FFZEl?uf4{9_Qi{L2=&hmbyFah*kU4M*f*?f<-*a zyieaB)hqVXIgano+uBA>!a^mLLfR>va(tqPsks4dF;z>0Ae8v-kg1jAjjoE+g>n#>iM zqmVu!$-Mf**{IlU)VQl=X9Pdrw2z@NzlEZq00D`hc#42 zW*Dt~l3gjw4Y~Ifny>EM66D<{@u2igG!og1kEY(0Vod~FI0PY@M}iQs8NV@74gHWW zRn2^VB4Kg`sNtv#PdawgU{J8sOTp3YhQ9Q-AZD`Lts6Gzs(O9c`y3ej&~I^6@ygddFJ zzr(tikBm&kepdY#qmWezib=O8o?WPDx-+y%2x!cSjI)L0aLgQ;q6ZkH~4F+klPS4oIMfRm_MT}5l=irfU(8BE#-cTzWrxD4| zCbKn3BaWcd7N&!M4#Jre`xp1n?HDUbl1Z~rcWvBwN|w|Q*X11P>e>Mde-Yako-vG6 z)||G?6{0fUw)v->Z*7B3hY$TE#II+DrRPC*HiO6?*1O_lKeL>a@C>0Yr`y6i%?4#J ze2)B^u7l)OHgwzXz8@H9WgOi&rUx~|SC(!J$j_0@T61Cfef=XDAFK*VvTeg4vGinrA?k>0DFJON+?y}bM zZgX@g_4q3Nx3WH#T)MDk7s?J&*HSsfqb(_{*Sd`uO%OC|Lnpkbt@5avim_(wQ@^B> z%njYu;b_a6)Z~{jcQ@tSjZFcbS5m>t7j1TBp)@0MPf;#z1Img z-cehoLYKeK&$oPmoG?w6E|@B2ii$i|;VVKGk)JaN8?u!*Oupp)AZC~5Qb~T_AX3D? zzca)Q!(~4+7<4Ic%4}9qGxmy!Qtn5(nT3fz z&=wQD%#SqA4JqpCgDTzh6kjjJ(=$12@9jHOeLfAXPeqANLtO%}&?lakQwA$y^GShZ$!F;)J;W6i!hyLCBE;LQY+|EtK?DgnOcIt3e-sCT;?29 z=tM%5LLm`KgXNQ!w0ZI8R4N$l!LNJKZN!>5+TT9$<_xD&Dlk*AkgT(4y)79vJ-e{4 zaeUAErKOR>$uVsc2Vz*_Cbf;Xxf1+LPG{f#(-Y}~ZdVWSAiT%C&p&e@d$k#ZIwu#8 zkB7*21G<&tSab+`Iq5Yk`7S>?!OsGWIb&5|5JUKs08%|gqR%J|xlg(lD)&h!fQ4B% zgZQ1!hQCM$7kO=f#_6|GlL5^izW{hm3UB;9R!70B5idqdg ze~;*Ra6#E;)Uy~BRpIbDA2n&@BDN2i~BDH<72h1@gQ z4(UZ~>JYh#YBv_;dC9ccZu{bM!{2#V;riseh671Y6Pf}dg{}zwl0&k+Mr*9VXLqQ5 z{Z(A%IB0kwMkQ8T$?vkZi8DbY;LHIA3C4;HN9G-i_+N_)ZpRuvG*6V$Z1nA|()))C zix{oNwEk2#SAC5;PVwuUubNzb44%O=5(O{i#5b5GJDqIJv~x+K#kW%|!tyTqdHyB}sU6UtE=Y@As`0w&dg_(NM#PZC%29 zc3Vbc?l1P;Jv=-lO3SUzA83Hp$Vn<22V)d`w{*}h?tgs{(13;K#tbSDV4QYL`+$cRmwUQ!uA-l^ zk;9-LleY!DNAL5I_359Dcl>GD?N3$w z=JGpc%6fV3p&qz_i`BOBCl~Z|ZS*BYP(3T$pp?A0v*6C=v(e3&nawd6U9x5nXc2WFrb9&8M4aH-D(FG z{+A`n$dPO2(5}Zm8DezfvGPJWTdMek+vlk`pGU`D&OOa!X#K1bULn^_`{t?-r$7vg z9$zy&@d-;r4<1d3?_wOPBs~jD9WEK(6r=PK)&81wp(^)yWAgY$FEf(aCoeq&tQ9 z4*dSul-_AwK*RbPiAETQg}Ga}=(rsuhEL7CHmfLzN+|9mcMZ^P zI%GSgJ}!7_9H%w@j$f^%n}fF$!p)2HT*Js3aA7PNCobv4@87#ly8bSQInq z?(I3EMx#LI#Jp>-gx+?~&d9D|b4FOJUpT{uewWtIE~nih@k#Qq!%q_50_BjVl)maS zvUa8mhq4SZkW4K@=<|5!28{gkK1}WU^p*ubZe`+h0Y6dpHdjDoW+OZ0va28TC!H`f zuzyYdjgzU=UJ{$xdq26^`d{>r_{vSg@2C-io^uxT9I1#TM8(n(HKBNV%P|$Tl1yCY z7$s^jAefpd$Dvih4k_+Tbx$OWevy;UTazl0J!eTVHv%IvI9CtiG%+h-oQ+>&{bH=* zOlqP-VIiE=o%^QDG0U2=?)@vDJ-D+71iJS?sd8)W50T00m<~HEXohyJbWf1s&|tVg zeX72RtAe4h`spaPov2*JWizO7OV%K*P4QSKVZtJ6Ex`f9f(l`(B$Z715SWWhnIXjWM57Jjn@fq5e;g`+^J zZNiQ|qJs_;4AUnC-K*-KzY~9n-M|n9YM!%Qs$Y6`FNY*;ZmDD~ERXWPYqRunjxCyT zpNZu=m4LIWg4&tJE}mxiOj~lsgW+bcB<*cH6FY(#{>b)n)zb^RhOiIz_v-sgU$qt( zFsw=K%&*$#28Bz(QiaY+-9EmHJ&@mw30)qtyzBvKk15l)R>i$VJWD_vh6oEw3Q(Ld zshgI~)iW4Cv)GZ|_amtzh(Z-UN1dJx()<(;*57WiS^M(H2ecp0^+CgKw7eB6zGS-2 z(QS;C3_Pl}Sz?_Bcvi-(k+qU)`fNunmnE{Wr(f1#zM z(fgErYW8L7`{2UZ1A#Ab$NKivaqUgi;R2~!O)e#C2V%O@t{LosvzoZapN;GY5b5F(-6j4UpKwy4z8!w zu$+CP%NaT%V9Zfhzb~Nc$^3l#_;v*$eR_vh^peCr$Ws|0HEC~7nRWm!P=8;#V z=mlzPOD>CvmEjsb*pk}WFeMW7lT>293oUf)YqFV!1sX76dCtM$B`IVj6(qH#~#>L_!M0|&*$4oa}3 z_fNkA8I_uv^=xSuoez&2?~g;e7{oZ8g;=a9;@d?Ttvc8DSL@H?pfG;3yjxhH*-vy&HDm2_9_-g)bD8~s^z&D?qC*GI=G zQyCI&9GT*o98X|$IKM@+NF!CEd~{q}83{Hm*Rz)l85}w@;*uKD zHWV`a6`Br?<2GGgRmbP3rklgamwNag5-ZXj_V}`+hce6_ouzR+r9%qCgyI&r+@>l;{?Bj>%hnD&-z;s+R$eiOHI e^Sc*|r=YC#U~F86)dGJi2{d53Dz!?_!~O@}x_^-X diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html index 6d085e7027..ad96416de7 100644 --- a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html +++ b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html @@ -1 +1 @@ -Clash
\ No newline at end of file +Clash
\ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/js/1.bundle.01d1a3c82895ade21dbf.min.js b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/js/1.bundle.01d1a3c82895ade21dbf.min.js deleted file mode 100644 index f1f5935a94..0000000000 --- a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/js/1.bundle.01d1a3c82895ade21dbf.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 1.bundle.01d1a3c82895ade21dbf.min.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(e,t,n){"use strict";e.exports=n(54)},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},,,,function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(55)},function(e,t,n){e.exports=n(58)()},function(e,t,n){"use strict";e.exports=n(62)},function(e,t,n){var r=n(38)(Object,"create");e.exports=r},function(e,t,n){var r=n(109);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(115);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){"use strict";function r(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:p(e)?2:h(e)?3:0}function s(e,t){return 2===l(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function c(e,t){return 2===l(e)?e.get(t):e[t]}function f(e,t,n){var r=l(e);2===r?e.set(t,n):3===r?(e.delete(t),e.add(n)):e[t]=n}function d(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function p(e){return K&&e instanceof Map}function h(e){return Y&&e instanceof Set}function m(e){return e.o||e.t}function v(e){if(Array.isArray(e))return e.slice();var t=ne(e);delete t[Z];for(var n=te(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=y),Object.freeze(e),t&&u(e,(function(e,t){return g(t,!0)}),!0))}function y(){r(2)}function b(e){return null==e||"object"!=typeof e||Object.isFrozen(e)}function w(e){var t=re[e];return t||r(19,e),t}function S(e,t){re[e]=t}function x(){return G}function _(e,t){t&&(w("Patches"),e.u=[],e.s=[],e.v=t)}function E(e){T(e),e.p.forEach(k),e.p=null}function T(e){e===G&&(G=e.l)}function R(e){return G={p:[],l:G,h:e,m:!0,_:0}}function k(e){var t=e[Z];0===t.i||1===t.i?t.j():t.g=!0}function C(e,t){t._=t.p.length;var n=t.p[0],o=void 0!==e&&e!==n;return t.h.O||w("ES5").S(t,e,o),o?(n[Z].P&&(E(t),r(4)),i(e)&&(e=P(t,e),t.l||M(t,e)),t.u&&w("Patches").M(n[Z],e,t.u,t.s)):e=P(t,n,[]),E(t),t.u&&t.v(t.u,t.s),e!==X?e:void 0}function P(e,t,n){if(b(t))return t;var r=t[Z];if(!r)return u(t,(function(o,i){return O(e,r,t,o,i,n)}),!0),t;if(r.A!==e)return t;if(!r.P)return M(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var o=4===r.i||5===r.i?r.o=v(r.k):r.o;u(3===r.i?new Set(o):o,(function(t,i){return O(e,r,o,t,i,n)})),M(e,o,!1),n&&e.u&&w("Patches").R(r,n,e.u,e.s)}return r.o}function O(e,t,n,r,a,u){if(o(a)){var l=P(e,a,u&&t&&3!==t.i&&!s(t.D,r)?u.concat(r):void 0);if(f(n,r,l),!o(l))return;e.m=!1}if(i(a)&&!b(a)){if(!e.h.N&&e._<1)return;P(e,a),t&&t.A.l||M(e,a)}}function M(e,t,n){void 0===n&&(n=!1),e.h.N&&e.m&&g(t,n)}function A(e,t){var n=e[Z];return(n?m(n):e)[t]}function I(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function z(e){e.P||(e.P=!0,e.l&&z(e.l))}function N(e){e.o||(e.o=v(e.t))}function L(e,t,n){var r=p(t)?w("MapSet").T(t,n):h(t)?w("MapSet").F(t,n):e.O?function(e,t){var n=Array.isArray(e),r={i:n?1:0,A:t?t.A:x(),P:!1,I:!1,D:{},l:t,t:e,k:null,o:null,j:null,C:!1},o=r,i=oe;n&&(o=[r],i=ie);var a=Proxy.revocable(o,i),u=a.revoke,l=a.proxy;return r.k=l,r.j=u,l}(t,n):w("ES5").J(t,n);return(n?n.A:x()).p.push(r),r}function F(e){return o(e)||r(22,e),function e(t){if(!i(t))return t;var n,r=t[Z],o=l(t);if(r){if(!r.P&&(r.i<4||!w("ES5").K(r)))return r.t;r.I=!0,n=j(t,o),r.I=!1}else n=j(t,o);return u(n,(function(t,o){r&&c(r.t,t)===o||f(n,t,e(o))})),3===o?new Set(n):n}(e)}function j(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return v(e)}function D(){function e(e,t){var n=i[e];return n?n.enumerable=t:i[e]=n={configurable:!0,enumerable:t,get:function(){var t=this[Z];return oe.get(t,e)},set:function(t){var n=this[Z];oe.set(n,e,t)}},n}function t(e){for(var t=e.length-1;t>=0;t--){var o=e[t][Z];if(!o.P)switch(o.i){case 5:r(o)&&z(o);break;case 4:n(o)&&z(o)}}}function n(e){for(var t=e.t,n=e.k,r=te(n),o=r.length-1;o>=0;o--){var i=r[o];if(i!==Z){var a=t[i];if(void 0===a&&!s(t,i))return!0;var u=n[i],l=u&&u[Z];if(l?l.t!==a:!d(u,a))return!0}}var c=!!t[Z];return r.length!==te(t).length+(c?0:1)}function r(e){var t=e.k;if(t.length!==e.t.length)return!0;var n=Object.getOwnPropertyDescriptor(t,t.length-1);return!(!n||n.get)}var i={};S("ES5",{J:function(t,n){var r=Array.isArray(t),o=function(t,n){if(t){for(var r=Array(n.length),o=0;o1?r-1:0),u=1;u1?n-1:0),i=1;i=0;n--){var r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}var i=w("Patches").$;return o(e)?i(e,t):this.produce(e,(function(e){return i(e,t.slice(n+1))}))},e}(),ue=new ae,le=ue.produce,se=ue.produceWithPatches.bind(ue),ce=ue.setAutoFreeze.bind(ue),fe=ue.setUseProxies.bind(ue),de=ue.applyPatches.bind(ue),pe=ue.createDraft.bind(ue),he=ue.finishDraft.bind(ue);t.default=le},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(37),o=n(88);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(24).Symbol;e.exports=r},function(e,t,n){var r=n(85),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){var r=n(119);e.exports=function(e){return null==e?"":r(e)}},,function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",o="day",i="week",a="month",u="quarter",l="year",s="date",c=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},p={s:d,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+d(r,2,"0")+":"+d(o,2,"0")},m:function e(t,n){if(t.date()-1&&(t.__listeners[r]=t.__listeners[t.__listeners.length-1],t.__listeners.length--)}}},e.prototype.notify=function(){for(var e=0,t=this.__listeners;en.errorRetryCount)){var i=Math.min(o.retryCount||0,8),u=~~((Math.random()+.5)*(1<0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0));return Promise.all(l).then((function(){return s.get(r)}))}return Promise.resolve(s.get(r))},O=function(e,t,n){var r=T[e];if(e&&r)for(var o=0;o0));return[2,Promise.all(h).then((function(){if(c)throw c;return s.get(o)}))]}if(c)throw c;return[2,l]}}))}))};var A=m.Provider,I=function(){for(var e=this,t=[],n=0;n=1&&(o=t[0]),t.length>2?(i=t[1],u=t[2]):"function"==typeof t[1]?i=t[1]:"object"==typeof t[1]&&(u=t[1]);var l=s.serializeKey(o),c=l[0],h=l[1],y=l[2];u=Object.assign({},f,Object(r.useContext)(m),u),void 0===i&&(i=u.fetcher);var C=s.get(c)||u.initialData,P=s.get(y),A=Object(r.useRef)({data:!1,error:!1,isValidating:!1}),I=Object(r.useRef)({data:C,error:P,isValidating:!1}),z=Object(r.useState)(null)[1],N=Object(r.useCallback)((function(e){var t=!1;for(var n in e)I.current[n]=e[n],A.current[n]&&(t=!0);if(t||u.suspense){if(L.current)return;z({})}}),[]),L=Object(r.useRef)(!1),F=Object(r.useRef)(c),j=Object(r.useRef)({emit:function(e){for(var t=[],n=1;n=0&&(n[r]=n[n.length-1],n.pop())}},U=Object(r.useCallback)((function(t){return void 0===t&&(t={}),v(e,void 0,void 0,(function(){var e,n,r,o,a,l,f;return g(this,(function(d){switch(d.label){case 0:if(!c||!i)return[2,!1];if(L.current)return[2,!1];t=Object.assign({dedupe:!1},t),e=!0,n=void 0!==S[c]&&t.dedupe,d.label=1;case 1:return d.trys.push([1,6,,7]),N({isValidating:!0}),r=void 0,o=void 0,n?(o=x[c],[4,S[c]]):[3,3];case 2:return r=d.sent(),[3,5];case 3:return u.loadingTimeout&&!s.get(c)&&setTimeout((function(){e&&j.current.emit("onLoadingSlow",c,u)}),u.loadingTimeout),S[c]=null!==h?i.apply(void 0,h):i(c),x[c]=o=Date.now(),[4,S[c]];case 4:r=d.sent(),setTimeout((function(){delete S[c],delete x[c]}),u.dedupingInterval),j.current.emit("onSuccess",r,c,u),d.label=5;case 5:return x[c]>o||R[c]&&(o<=R[c]||o<=k[c]||0===k[c])?(N({isValidating:!1}),[2,!1]):(s.set(c,r),s.set(y,void 0),a={isValidating:!1},void 0!==I.current.error&&(a.error=void 0),u.compare(I.current.data,r)||(a.data=r),N(a),n||O(c,r,void 0),[3,7]);case 6:return l=d.sent(),delete S[c],delete x[c],s.set(y,l),I.current.error!==l&&(N({isValidating:!1,error:l}),n||O(c,void 0,l)),j.current.emit("onError",l,c,u),u.shouldRetryOnError&&(f=(t.retryCount||0)+1,j.current.emit("onErrorRetry",l,c,u,U,Object.assign({dedupe:!0},t,{retryCount:f}))),[3,7];case 7:return e=!1,[2,!0]}}))}))}),[c]);if(w((function(){if(c){L.current=!1;var e=I.current.data,t=s.get(c)||u.initialData;F.current===c&&u.compare(e,t)||(N({data:t}),F.current=c);var n,r,o=function(){return U({dedupe:!0})};(u.revalidateOnMount||!u.initialData&&void 0===u.revalidateOnMount)&&(void 0!==t?b(o):o()),u.revalidateOnFocus&&(n=p(o,u.focusThrottleInterval)),u.revalidateOnReconnect&&(r=o);var i=function(e,t,n,r){void 0===e&&(e=!0),void 0===r&&(r=!0);var i={},a=!1;return void 0===t||u.compare(I.current.data,t)||(i.data=t,a=!0),I.current.error!==n&&(i.error=n,a=!0),a&&N(i),!!e&&(r?o():U())};return B(_,n),B(E,r),B(T,i),function(){N=function(){return null},L.current=!0,V(_,n),V(E,r),V(T,i)}}}),[c,U]),w((function(){var t=null,n=function(){return v(e,void 0,void 0,(function(){return g(this,(function(e){switch(e.label){case 0:return I.current.error||!u.refreshWhenHidden&&!a()||!u.refreshWhenOffline&&!d()?[3,2]:[4,U({dedupe:!0})];case 1:e.sent(),e.label=2;case 2:return u.refreshInterval&&(t=setTimeout(n,u.refreshInterval)),[2]}}))}))};return u.refreshInterval&&(t=setTimeout(n,u.refreshInterval)),function(){t&&clearTimeout(t)}}),[u.refreshInterval,u.refreshWhenHidden,u.refreshWhenOffline,U]),u.suspense){var W=s.get(c)||C,H=s.get(y)||P;if(void 0===W&&void 0===H){if(S[c]||U(),S[c]&&"function"==typeof S[c].then)throw S[c];W=S[c]}if(void 0===W&&H)throw H;return{error:H,data:W,revalidate:U,mutate:D,isValidating:I.current.isValidating}}return Object(r.useMemo)((function(){var e={revalidate:U,mutate:D};return Object.defineProperties(e,{error:{get:function(){return A.current.error=!0,F.current===c?I.current.error:P},enumerable:!0},data:{get:function(){return A.current.data=!0,F.current===c?I.current.data:C},enumerable:!0},isValidating:{get:function(){return A.current.isValidating=!0,I.current.isValidating},enumerable:!0}}),e}),[U])},z=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(t){i(t)}}function u(e){try{l(r.throw(e))}catch(t){i(t)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}l((r=r.apply(e,t||[])).next())}))},N=function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=1&&(o=t[0]),t.length>2?(i=t[1],a=t[2]):"function"==typeof t[1]?i=t[1]:"object"==typeof t[1]&&(a=t[1]);var u=(a=Object.assign({},f,Object(r.useContext)(m),a)).initialSize,l=void 0===u?1:u,c=a.revalidateAll,d=void 0!==c&&c,p=a.persistSize,h=void 0!==p&&p,v=a.fetcher,g=L(a,["initialSize","revalidateAll","persistSize","fetcher"]);void 0===i&&(i=v);var y=null;try{y=s.serializeKey(o(0,null))[0]}catch(k){}var b=Object(r.useState)(!1)[1],w=null;y&&(w="context@"+y);var S,x=null;y&&(x="size@"+y,S=s.get(x));var _=Object(r.useRef)(S||l),E=Object(r.useRef)(!1);Object(r.useEffect)((function(){E.current?h||(_.current=l):E.current=!0}),[y]);var T=I(y?["many",y]:null,(function(){return z(e,void 0,void 0,(function(){var e,t,n,r,u,l,c,f,p,h;return N(this,(function(m){switch(m.label){case 0:e=s.get(w)||{},t=e.originalData,n=e.force,r=[],u=null,l=0,m.label=1;case 1:return l<_.current?(c=s.serializeKey(o(l,u)),f=c[0],p=c[1],f?(h=s.get(f),d||n||void 0===n&&0===l||t&&!a.compare(t[l],h)||void 0===h?null===p?[3,3]:[4,i.apply(void 0,p)]:[3,6]):[3,8]):[3,8];case 2:return h=m.sent(),[3,5];case 3:return[4,i(f)];case 4:h=m.sent(),m.label=5;case 5:s.set(f,h),m.label=6;case 6:r.push(h),u=h,m.label=7;case 7:return++l,[3,1];case 8:return s.delete(w),[2,r]}}))}))}),g),R=T.mutate;return T.size=_.current,T.mutate=Object(r.useCallback)((function(e,t){if(void 0===t&&(t=!0),t&&void 0!==e){var n=T.data;s.set(w,{originalData:n,force:!1})}else t&&s.set(w,{force:!0});return R(e,t)}),[R,T.data,w]),T.setSize=Object(r.useCallback)((function(e){return"function"==typeof e?_.current=e(_.current):"number"==typeof e&&(_.current=e),s.set(x,_.current),b((function(e){return!e})),T.mutate((function(e){return e}))}),[T.mutate,x]),T}t.default=I},function(e,t,n){"use strict";n.r(t),n.d(t,"MemoryRouter",(function(){return B})),n.d(t,"Prompt",(function(){return U})),n.d(t,"Redirect",(function(){return G})),n.d(t,"Route",(function(){return Q})),n.d(t,"Router",(function(){return D})),n.d(t,"StaticRouter",(function(){return ne})),n.d(t,"Switch",(function(){return re})),n.d(t,"generatePath",(function(){return $})),n.d(t,"matchPath",(function(){return Y})),n.d(t,"useHistory",(function(){return ae})),n.d(t,"useLocation",(function(){return ue})),n.d(t,"useParams",(function(){return le})),n.d(t,"useRouteMatch",(function(){return se})),n.d(t,"withRouter",(function(){return oe})),n.d(t,"BrowserRouter",(function(){return ce})),n.d(t,"HashRouter",(function(){return fe})),n.d(t,"Link",(function(){return ge})),n.d(t,"NavLink",(function(){return we}));var r=n(3),o=n(0),i=n.n(o),a=(n(13),n(2));function u(e){return"/"===e.charAt(0)}function l(e,t){for(var n=t,r=n+1,o=e.length;r=0;d--){var p=o[d];"."===p?l(o,d):".."===p?(l(o,d),f++):f&&(l(o,d),f--)}if(!s)for(;f--;f)o.unshift("..");!s||""===o[0]||o[0]&&u(o[0])||o.unshift("");var h=o.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function c(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var f=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=c(t),o=c(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var d=function(e,t){if(!e)throw new Error("Invariant failed")};function p(e){return"/"===e.charAt(0)?e:"/"+e}function h(e){return"/"===e.charAt(0)?e.substr(1):e}function m(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function v(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function g(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function y(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(a.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=s(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=y(e,t,d(),w.location);c.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(w.entries[w.index]=r,f({action:"REPLACE",location:r}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(i)})),e.exports=l}).call(this,n(132))},function(e,t,n){"use strict";var r=n(7),o=n(134),i=n(41),a=n(136),u=n(139),l=n(140),s=n(45);e.exports=function(e){return new Promise((function(t,c){var f=e.data,d=e.headers;r.isFormData(f)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";d.Authorization="Basic "+btoa(h+":"+m)}var v=a(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),i(v,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?u(p.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:e,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(s(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var g=n(141),y=(e.withCredentials||l(v))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;y&&(d[e.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(b){if("json"!==e.responseType)throw b}"function"==typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),c(e),p=null)})),void 0===f&&(f=null),p.send(f)}))}},function(e,t,n){"use strict";var r=n(135);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,(function(e){void 0!==t[e]&&(n[e]=t[e])})),r.forEach(i,(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):void 0!==t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):void 0!==e[o]&&(n[o]=e[o])})),r.forEach(a,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}));var u=o.concat(i).concat(a),l=Object.keys(t).filter((function(e){return-1===u.indexOf(e)}));return r.forEach(l,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},,function(e,t){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return n.test(e)}},function(e,t,n){"use strict";var r=n(33),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},u={};function l(e){return r.isMemo(e)?a:u[e.$$typeof]||o}u[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},u[r.Memo]=a;var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var a=c(n);f&&(a=a.concat(f(n)));for(var u=l(t),m=l(n),v=0;vO.length&&O.push(e)}function I(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var l=!1;if(null===t)l=!0;else switch(u){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return r(o,t,""===n?"."+z(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s