small-package/luci-app-openclash/root/usr/share/openclash/openclash_download_dashboar...

77 lines
3.7 KiB
Bash
Raw Normal View History

2022-11-05 20:19:37 +08:00
#!/bin/bash
2022-07-27 23:43:06 +08:00
. /usr/share/openclash/log.sh
. /lib/functions.sh
DASH_NAME="$1"
DASH_TYPE="$2"
DASH_FILE_DIR="/tmp/dash.zip"
DASH_FILE_TMP="/tmp/dash/"
2022-11-05 20:19:37 +08:00
LOG_FILE="/tmp/openclash.log"
2022-07-27 23:43:06 +08:00
github_address_mod=$(uci -q get openclash.config.github_address_mod || echo 0)
if [ "$DASH_NAME" == "Dashboard" ]; then
UNPACK_FILE_DIR="/usr/share/openclash/ui/dashboard/"
BACKUP_FILE_DIR="/usr/share/openclash/ui/dashboard_backup/"
if [ "$DASH_TYPE" == "Official" ]; then
2024-06-10 12:22:51 +08:00
DOWNLOAD_PATH="https://codeload.github.com/ayanamist/clash-dashboard/zip/refs/heads/gh-pages"
2022-07-27 23:43:06 +08:00
FILE_PATH_INCLUDE="clash-dashboard-gh-pages"
else
DOWNLOAD_PATH="https://codeload.github.com/MetaCubeX/Razord-meta/zip/refs/heads/gh-pages"
FILE_PATH_INCLUDE="Razord-meta-gh-pages"
fi
2023-11-19 23:34:57 +08:00
elif [ "$DASH_NAME" == "Yacd" ]; then
2022-07-27 23:43:06 +08:00
UNPACK_FILE_DIR="/usr/share/openclash/ui/yacd/"
BACKUP_FILE_DIR="/usr/share/openclash/ui/yacd_backup/"
if [ "$DASH_TYPE" == "Official" ]; then
DOWNLOAD_PATH="https://codeload.github.com/haishanh/yacd/zip/refs/heads/gh-pages"
FILE_PATH_INCLUDE="yacd-gh-pages"
else
DOWNLOAD_PATH="https://codeload.github.com/MetaCubeX/Yacd-meta/zip/refs/heads/gh-pages"
FILE_PATH_INCLUDE="Yacd-meta-gh-pages"
fi
2023-11-19 23:34:57 +08:00
else
UNPACK_FILE_DIR="/usr/share/openclash/ui/metacubexd/"
BACKUP_FILE_DIR="/usr/share/openclash/ui/metacubexd_backup/"
DOWNLOAD_PATH="https://codeload.github.com/MetaCubeX/metacubexd/zip/refs/heads/gh-pages"
FILE_PATH_INCLUDE="metacubexd-gh-pages"
2022-07-27 23:43:06 +08:00
fi
2024-02-11 00:21:09 +08:00
curl -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 "$DOWNLOAD_PATH" -o "$DASH_FILE_DIR" 2>&1 |sed ':a;N;$!ba; s/\n/ /g' | awk -v time="$(date "+%Y-%m-%d %H:%M:%S")" -v file="$DASH_FILE_DIR" '{print time "【" file "】Download Failed:【"$0"】"}' >> "$LOG_FILE"
2022-08-20 23:41:10 +08:00
2022-11-05 20:19:37 +08:00
if [ "${PIPESTATUS[0]}" -eq 0 ] && [ -s "$DASH_FILE_DIR" ] && [ -z "$(grep "404: Not Found" "$DASH_FILE_DIR")" ] && [ -z "$(grep "Package size exceeded the configured limit" "$DASH_FILE_DIR")" ]; then
2022-08-20 23:41:10 +08:00
unzip -qt "$DASH_FILE_DIR" >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
cp -rf "$UNPACK_FILE_DIR". "$BACKUP_FILE_DIR" >/dev/null 2>&1
rm -rf "$UNPACK_FILE_DIR" >/dev/null 2>&1
unzip -q "$DASH_FILE_DIR" -d "$DASH_FILE_TMP" >/dev/null 2>&1
if [ "$?" -eq "0" ] && [ -d "$DASH_FILE_TMP$FILE_PATH_INCLUDE" ]; then
cp -rf "$DASH_FILE_TMP$FILE_PATH_INCLUDE"/. "$UNPACK_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_DIR" >/dev/null 2>&1
rm -rf "$BACKUP_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_TMP" >/dev/null 2>&1
LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Download Successful!" && SLOG_CLEAN
2022-11-05 20:19:37 +08:00
exit 1
2022-08-20 23:41:10 +08:00
else
LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Unzip Error!" && SLOG_CLEAN
cp -rf "$BACKUP_FILE_DIR". "$UNPACK_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_DIR" >/dev/null 2>&1
rm -rf "$BACKUP_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_TMP" >/dev/null 2>&1
2022-11-05 20:19:37 +08:00
exit 2
2022-08-20 23:41:10 +08:00
fi
2022-07-27 23:43:06 +08:00
else
LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Unzip Error!" && SLOG_CLEAN
cp -rf "$BACKUP_FILE_DIR". "$UNPACK_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_DIR" >/dev/null 2>&1
rm -rf "$BACKUP_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_TMP" >/dev/null 2>&1
2022-11-05 20:19:37 +08:00
exit 2
2022-07-27 23:43:06 +08:00
fi
else
cp -rf "$BACKUP_FILE_DIR". "$UNPACK_FILE_DIR" >/dev/null 2>&1
rm -rf "$BACKUP_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_DIR" >/dev/null 2>&1
rm -rf "$DASH_FILE_TMP" >/dev/null 2>&1
LOG_OUT "Control Panel【$DASH_NAME - $DASH_TYPE】Download Error!" && SLOG_CLEAN
2022-11-05 20:19:37 +08:00
exit 0
2022-07-27 23:43:06 +08:00
fi