git_pull 重构,样式优化

This commit is contained in:
whyour 2021-04-01 23:50:24 +08:00
parent 4ca49edf01
commit d5b9bca68b
12 changed files with 278 additions and 290 deletions

5
.gitignore vendored
View File

@ -19,6 +19,9 @@
/src/.umi-production
/src/.umi-test
/.env.local
.env
/config
/log
.env
/db
/manual_log

View File

@ -36,7 +36,7 @@ export default (app: Router) => {
default:
break;
}
res.send({ code: 200, content });
res.send({ code: 200, data: content });
} catch (e) {
logger.error('🔥 error: %o', e);
return next(e);

View File

@ -17,6 +17,9 @@ const logPath = path.join(rootPath, 'log/');
const authError = '错误的用户名密码,请重试';
const loginFaild = '请先登录!';
const configString = 'config sample crontab shareCode diy';
const dbPath = path.join(rootPath, 'db/');
const manualLogPath = path.join(rootPath, 'manual_log/');
const cronDbFile = path.join(rootPath, 'db/crontab.db');
if (envFound.error) {
throw new Error("⚠️ Couldn't find .env file ⚠️");
@ -48,4 +51,7 @@ export default {
'crontab.list': crontabFile,
'diy.sh': diyFile,
},
dbPath,
cronDbFile,
manualLogPath,
};

View File

@ -1,5 +1,6 @@
# 更新shell及面板代码
55 2,13 * * * git_pull >> ${QL_DIR}/log/git_pull.log 2>&1
# 更新你需要的仓库的代码
# diy test作者 test仓库 test路径1|test路径2 黑名单1文件名|黑名单2文件名
33 * * * * diy whyour hundun "quanx/jx|quanx/jd" tokens >> ${QL_DIR}/log/diy_pull.log 2>&1
@ -14,49 +15,13 @@
# 导出所有互助码清单日志在log/export_sharecodes下
48 5 * * * export_sharecodes
# 重启挂机脚本,挂机脚本可以随容器启动而启动,建议需要重启挂机程序时直接重启容器,如实在不想通过重启容器而重启挂机程序,可以解除下一行注释
# 33 13 * * * js hangup
# 重启挂机脚本
# 33 3 * * * js hangup
# 运行lxk0301大佬的js脚本仅列出长期任务作初始化用AutoAddCron=true时将自动添加短期任务。
# 请保留任务名称中的前缀"jd_",去掉后缀".js",如果有些任务你不想运行,注释掉就好了,不要删除。
# 非lxk0301/jd_scripts仓库中的脚本不能以“jd_”、“jr_”、“jx_”开头。请在最后保留一个空行。
5 9 * * * js jd_bean_change
28 5 * * * js jd_bean_home
4 0,9 * * * js jd_bean_sign
0,30 0 * * * js jd_blueCoin
12 8,12,18 * * * js jd_bookshop
37 7 * * * js jd_car
13 8,22 * * * js jd_cash
0 0 * * * js jd_car_exchange
2 0 * * * js jd_club_lottery
43 13 * * * js jd_crazy_joy
54 2-23/3 * * * js jd_daily_egg
20 * * * * js jd_dreamFactory
29 7,12,18 * * * js jd_fruit
49 6 * * * js jd_get_share_code
36 * * * * js jd_jdfactory
14 11 * * * js jd_jdzz
6 0,8,9,13,18,22 * * * js jd_joy
*/20 0-22 * * * js jd_joy_feedPets
0 0,8,12,16 * * * js jd_joy_reward
12 9-20/2 * * * js jd_joy_run
0 0,6 * * * js jd_joy_steal
0 9,12,18 * * * js jd_jxnc
32 7 * * * js jd_kd
13-33/5 13 * * * js jd_live
15 1 * * * js jd_lotteryMachine
40 */4 * * * js jd_moneyTree
20 0,20 * * * js jd_necklace
10 7,12,18 * * * js jd_pet
25 * * * * js jd_pigPet
35 7-22 * * * js jd_plantBean
11 0 * * * js jd_rankingList
1 1 * * * js jd_redPacket
0 0 * * * js jd_shop
16 0 * * * js jd_small_home
35 */3 * * * js jd_speed
9 1-23/5 * * * js jd_superMarket
25 9 * * * js jd_syj
44 5 * * 5 js jd_unbind
45 23 * * * js jd_unsubscribe
19 11 * * * js jx_sign
# 重置密码
# 33 6 */7 * * js resetpwd
# 运行所有脚本(慎用)
# 33 9 */7 * * js runall
# 其他定时任务

View File

@ -1,163 +1,77 @@
#!/usr/bin/env bash
## 文件路径、脚本网址、文件版本以及各种环境的判断
ShellDir=${QL_DIR:-$(cd $(dirname $0); pwd)}
[[ ${QL_DIR} ]] && ShellJs=js
LogDir=${ShellDir}/log
[ ! -d ${LogDir} ] && mkdir -p ${LogDir}
ScriptsDir=${ShellDir}/scripts
ConfigDir=${ShellDir}/config
FileConf=${ConfigDir}/config.sh
CookieConf=${ConfigDir}/cookie.sh
FileDiy=${ConfigDir}/diy.sh
FileConfSample=${ShellDir}/sample/config.sh.sample
ListCron=${ConfigDir}/crontab.list
ListCronLxk=${ScriptsDir}/docker/crontab_list.sh
ListTask=${LogDir}/task.list
ListJs=${LogDir}/js.list
ListJsAdd=${LogDir}/js-add.list
ListJsDrop=${LogDir}/js-drop.list
ContentVersion=${ShellDir}/version
ContentNewTask=${ShellDir}/new_task
ContentDropTask=${ShellDir}/drop_task
SendCount=${ShellDir}/send_count
isTermux=${ANDROID_RUNTIME_ROOT}${ANDROID_ROOT}
## 常量
ShellDir=${QL_DIR:-$(
cd $(dirname $0)
pwd
)}
[[ $QL_DIR ]] && ShellJs=js
LogDir=$ShellDir/log
[ ! -d $LogDir ] && mkdir -p $LogDir
DbDir=$ShellDir/db
[ ! -d $DbDir ] && mkdir -p $DbDir
ManualLogDir=$ShellDir/manual_log
[ ! -d $ManualLogDir ] && mkdir -p $ManualLogDir
ScriptsDir=$ShellDir/scripts
ConfigDir=$ShellDir/config
FileConf=$ConfigDir/config.sh
CookieConf=$ConfigDir/cookie.sh
ExtraShell=$ConfigDir/extra.sh
FileConfSample=$ShellDir/sample/config.sh.sample
ListCronSample=$ShellDir/sample/crontab.list.sample
ListCronCurrent=$ConfigDir/crontab.list
ListCronRemote=$ScriptsDir/docker/crontab_list.sh
ListCurrentTask=$LogDir/task.list
ListRemoteTask=$LogDir/js.list
ListJsAdd=$LogDir/js-add.list
ListJsDrop=$LogDir/js-drop.list
ContentVersion=$ShellDir/version
ContentNewTask=$ShellDir/new_task
ContentDropTask=$ShellDir/drop_task
SendVersion=$ShellDir/send_version
isTermux=$ANDROID_RUNTIME_ROOT$ANDROID_ROOT
ShellURL=https://github.com.cnpmjs.org/whyour/qinglong
ScriptsURL=https://github.com.cnpmjs.org/gossh520/jd_scripts
## 导入配置文件
function Import_Conf {
if [ -f ${FileConf} ]; then
. ${CookieConf}
. ${FileConf}
Import_Conf() {
if [ ! -s $FileConf ]; then
echo -e "复制一份 $FileConfSample 示例配置文件\n\n"
cp -fv $FileConfSample $FileConf
fi
if [ ! -s $ListCronCurrent ]; then
echo -e "复制一份 $ListCronSample 基础定时任务\n\n"
cp -fv $ListCronSample $ListCronCurrent
fi
[ -f $CookieConf ] && . $CookieConf
[ -f $FileConf ] && . $FileConf
}
## 更新crontabgitee服务器同一时间限制5个链接因此每个人更新代码必须错开时间每次执行git_pull随机生成。
## 每天次数随机更新时间随机更新秒数随机至少6次至多12次大部分为8-10次符合正态分布。
function Update_Cron {
if [[ $(date "+%-H") -le 2 ]] && [ -f ${ListCron} ]; then
RanMin=$((${RANDOM} % 60))
RanSleep=$((${RANDOM} % 56))
RanHourArray[0]=$((${RANDOM} % 3))
for ((i=1; i<14; i++)); do
j=$(($i - 1))
tmp=$((${RANDOM} % 3 + ${RanHourArray[j]} + 2))
[[ ${tmp} -lt 24 ]] && RanHourArray[i]=${tmp} || break
done
RanHour=${RanHourArray[0]}
for ((i=1; i<${#RanHourArray[*]}; i++)); do
RanHour="${RanHour},${RanHourArray[i]}"
done
perl -i -pe "s|.+(git_pull? .+git_pull\.log.*)|${RanMin} ${RanHour} \* \* \* sleep ${RanSleep} && \1|" ${ListCron}
crontab ${ListCron}
fi
}
function Git_PullShell {
# 更新shell
Git_Pull_Shell() {
echo -e "更新shell...\n"
cd ${ShellDir}
cd $ShellDir
git remote set-url origin $ShellURL
git fetch --all
ExitStatusShell=$?
git reset --hard origin/master
git pull
echo
}
## 更新shell成功后的操作
function Git_PullShellNext {
if [[ ${ExitStatusShell} -eq 0 ]]; then
Git_Pull_Shell_Next() {
if [[ $ExitStatusShell -eq 0 ]]; then
echo -e "更新shell成功...\n"
[[ "${PanelDependOld}" != "${PanelDependNew}" ]] && cd ${ShellDir}/panel && Npm_Install panel
cp -f ${FileConfSample} ${ConfigDir}/config.sh.sample
[ -d ${ScriptsDir}/node_modules ] && Notify_Version
[ ! -d $ShellDir/node_modules ] && Npm_Install panel
[ -f $ShellDir/package.json ] && PanelDependNew=$(cat $ShellDir/package.json)
[[ "$PanelDependOld" != "$PanelDependNew" ]] && cd $ShellDir && Npm_Install panel
cp -f $FileConfSample $ConfigDir/config.sh.sample
Notify_Version
else
echo -e "更新shell失败请检查原因...\n"
fi
}
## 克隆scripts
function Git_CloneScripts {
git clone -b master ${ScriptsURL} ${ScriptsDir}
ExitStatusScripts=$?
echo
}
## 更新scripts
function Git_PullScripts {
echo -e "更新scripts...\n"
cd ${ScriptsDir}
git remote set-url origin $ScriptsURL
git fetch --all
ExitStatusScripts=$?
git reset --hard origin/master
git pull
echo
}
## 检测文件LXK9301/jd_scripts 仓库中的 docker/crontab_list.sh
## 检测定时任务是否有变化此函数会在Log文件夹下生成四个文件分别为
## task.list crontab.list中的所有任务清单仅保留脚本名
## js.list 上述检测文件中用来运行js脚本的清单去掉后缀.js非运行脚本的不会包括在内
## js-add.list 如果上述检测文件增加了定时任务,这个文件内容将不为空
## js-drop.list 如果上述检测文件删除了定时任务,这个文件内容将不为空
function Diff_Cron {
if [ -f ${ListCron} ]; then
if [ -n "${QL_DIR}" ]
then
grep -E " j[drx]_\w+" ${ListCron} | perl -pe "s|.+ (j[drx]_\w+).*|\1|" | sort -u > ${ListTask}
else
grep "${ShellDir}/" ${ListCron} | grep -E " j[drx]_\w+" | perl -pe "s|.+ (j[drx]_\w+).*|\1|" | sort -u > ${ListTask}
fi
cat ${ListCronLxk} | grep -E "j[drx]_\w+\.js" | perl -pe "s|.+(j[drx]_\w+)\.js.+|\1|" | sort -u > ${ListJs}
grep -vwf ${ListTask} ${ListJs} > ${ListJsAdd}
grep -vwf ${ListJs} ${ListTask} > ${ListJsDrop}
else
echo -e "${ListCron} 文件不存在请先定义你自己的crontab.list...\n"
fi
}
## 检测配置文件版本
function Notify_Version {
## 识别出两个文件的版本号
VerConfSample=$(grep " Version: " ${FileConfSample} | perl -pe "s|.+v((\d+\.?){3})|\1|")
[ -f ${FileConf} ] && VerConf=$(grep " Version: " ${FileConf} | perl -pe "s|.+v((\d+\.?){3})|\1|")
## 删除旧的发送记录文件
[ -f "${SendCount}" ] && [[ $(cat ${SendCount}) != ${VerConfSample} ]] && rm -f ${SendCount}
## 识别出更新日期和更新内容
UpdateDate=$(grep " Date: " ${FileConfSample} | awk -F ": " '{print $2}')
UpdateContent=$(grep " Update Content: " ${FileConfSample} | awk -F ": " '{print $2}')
## 如果是今天,并且版本号不一致,则发送通知
if [ -f ${FileConf} ] && [[ "${VerConf}" != "${VerConfSample}" ]] && [[ ${UpdateDate} == $(date "+%Y-%m-%d") ]]
then
if [ ! -f ${SendCount} ]; then
notify "检测到配置文件config.sh.sample有更新" "更新日期: ${UpdateDate}\n当前版本: ${VerConf}\n新的版本: ${VerConfSample}\n更新内容: ${UpdateContent}\n更新说明: 如需使用新功能请对照config.sh.sample将相关新参数手动增加到你自己的config.sh中否则请无视本消息。本消息只在该新版本配置文件更新当天发送一次。"
fi
else
[ -f ${ContentVersion} ] && rm -f ${ContentVersion}
[ -f ${SendCount} ] && rm -f ${SendCount}
fi
}
## npm install 子程序判断是否为安卓判断是否安装有yarn
function Npm_InstallSub {
if [ -n "${isTermux}" ]
then
npm install --no-bin-links --no-save || npm install --no-save --no-bin-links --registry=https://registry.npm.taobao.org
elif ! type yarn >/dev/null 2>&1
then
npm install --no-save || npm install --no-save --registry=https://registry.npm.taobao.org
else
echo -e "检测到本机安装了 yarn使用 yarn 替代 npm...\n"
yarn install || yarn install --registry=https://registry.npm.taobao.org
fi
}
## npm install
function Npm_Install {
Npm_Install() {
echo -e "检测到 $1 的依赖包有变化,运行 npm install...\n"
Npm_InstallSub
if [ $? -ne 0 ]; then
@ -183,131 +97,197 @@ function Npm_Install {
fi
}
## 输出是否有新的定时任务
function Output_ListJsAdd {
if [ -s ${ListJsAdd} ]; then
echo -e "检测到有新的定时任务:\n"
cat ${ListJsAdd}
echo
## npm install 子程序判断是否为安卓判断是否安装有yarn
function Npm_InstallSub() {
if [ -n "$isTermux" ]; then
npm install --no-bin-links --no-save || npm install --no-save --no-bin-links --registry=https://registry.npm.taobao.org
elif ! type yarn >/dev/null 2>&1; then
npm install --no-save || npm install --no-save --registry=https://registry.npm.taobao.org
else
echo -e "检测到本机安装了 yarn使用 yarn 替代 npm...\n"
yarn install || yarn install --registry=https://registry.npm.taobao.org
fi
}
## 输出是否有失效的定时任务
function Output_ListJsDrop {
if [ ${ExitStatusScripts} -eq 0 ] && [ -s ${ListJsDrop} ]; then
echo -e "检测到有失效的定时任务:\n"
cat ${ListJsDrop}
echo
fi
}
## 检测配置文件版本
Notify_Version() {
## 识别出两个文件的版本号
VerConfSample=$(grep " Version: " $FileConfSample | perl -pe "s|.+v((\d+\.?){3})|\1|")
[ -f $FileConf ] && VerConf=$(grep " Version: " $FileConf | perl -pe "s|.+v((\d+\.?){3})|\1|")
## 自动删除失效的脚本与定时任务需要5个条件1.AutoDelCron 设置为 true2.正常更新js脚本没有报错3.js-drop.list不为空4.crontab.list存在并且不为空5.已经正常运行过npm install
## 检测文件LXK9301/jd_scripts 仓库中的 docker/crontab_list.sh
## 如果检测到某个定时任务在上述检测文件中已删除,那么在本地也删除对应定时任务
function Del_Cron {
if [ "${AutoDelCron}" = "true" ] && [ -s ${ListJsDrop} ] && [ -s ${ListCron} ] && [ -d ${ScriptsDir}/node_modules ]; then
echo -e "开始尝试自动删除定时任务如下:\n"
cat ${ListJsDrop}
echo
JsDrop=$(cat ${ListJsDrop})
for Cron in ${JsDrop}
do
perl -i -ne "{print unless / ${Cron}( |$)/}" ${ListCron}
done
crontab ${ListCron}
echo -e "成功删除失效的脚本与定时任务,当前的定时任务清单如下:\n\n--------------------------------------------------------------\n"
crontab -l
echo -e "\n--------------------------------------------------------------\n"
if [ -d ${ScriptsDir}/node_modules ]; then
notify "删除 lxk0301 失效脚本" "${JsDrop}"
## 删除旧的发送记录文件
[ -f "$SendVersion" ] && [[ $(cat $SendVersion) != $VerConfSample ]] && rm -f $SendVersion
## 识别出更新日期和更新内容
UpdateDate=$(grep " Date: " $FileConfSample | awk -F ": " '{print $2}')
UpdateContent=$(grep " Update Content: " $FileConfSample | awk -F ": " '{print $2}')
## 如果是今天,并且版本号不一致,则发送通知
if [ -f $FileConf ] && [[ "$VerConf" != "$VerConfSample" ]] && [[ $UpdateDate == $(date "+%Y-%m-%d") ]]; then
if [ ! -f $SendVersion ]; then
notify "检测到配置文件config.sh.sample有更新" "更新日期: $UpdateDate\n当前版本: $VerConf\n新的版本: $VerConfSample\n更新内容: $UpdateContent\n更新说明: 如需使用新功能请对照config.sh.sample将相关新参数手动增加到你自己的config.sh中否则请无视本消息。本消息只在该新版本配置文件更新当天发送一次。"
fi
else
[ -f $ContentVersion ] && rm -f $ContentVersion
[ -f $SendVersion ] && rm -f $SendVersion
fi
}
## 自动增加新的定时任务需要5个条件1.AutoAddCron 设置为 true2.正常更新js脚本没有报错3.js-add.list不为空4.crontab.list存在并且不为空5.已经正常运行过npm install
## 检测文件LXK9301/jd_scripts 仓库中的 docker/crontab_list.sh
## 如果检测到检测文件中增加新的定时任务,那么在本地也增加
## 本功能生效时,会自动从检测文件新增加的任务中读取时间,该时间为北京时间
function Add_Cron {
if [ "${AutoAddCron}" = "true" ] && [ -s ${ListJsAdd} ] && [ -s ${ListCron} ] && [ -d ${ScriptsDir}/node_modules ]; then
echo -e "开始尝试自动添加定时任务如下:\n"
cat ${ListJsAdd}
echo
JsAdd=$(cat ${ListJsAdd})
## 每天次数随机更新时间随机更新秒数随机至少6次至多12次大部分为8-10次符合正态分布。
Random_Pull_Cron() {
if [[ $(date "+%-H") -le 2 ]]; then
RanMin=$(($RANDOM % 60))
RanSleep=$(($RANDOM % 56))
RanHourArray[0]=$(($RANDOM % 3))
for ((i = 1; i < 14; i++)); do
j=$(($i - 1))
tmp=$(($RANDOM % 3 + ${RanHourArray[j]} + 2))
[[ $tmp -lt 24 ]] && RanHourArray[i]=$tmp || break
done
for Cron in ${JsAdd}
do
if [[ ${Cron} == jd_bean_sign ]]
then
echo "4 0,9 * * * ${ShellJs} ${Cron}" >> ${ListCron}
for ((i = 1; i < ${#RanHourArray[*]}; i++)); do
RanHour="$RanHour,${RanHourArray[i]}"
done
perl -i -pe "s|.+(git_pull? .+git_pull\.log.*)|$RanMin $RanHour \* \* \* sleep $RanSleep && \1|" $ListCronCurrent
crontab $ListCronCurrent
fi
}
## 克隆scripts
Git_Clone_Scripts() {
git clone -b master $ScriptsURL $ScriptsDir
ExitStatusScripts=$?
}
## 更新scripts
Git_Pull_Scripts() {
if [ -d $ScriptsDir/.git ]; then
echo -e "更新scripts...\n"
cd $ScriptsDir
git remote set-url origin $ScriptsURL
git fetch --all
ExitStatusScripts=$?
git reset --hard origin/master
git pull
else
Git_Clone_Scripts
fi
}
Git_Pull_Scripts_Next() {
if [[ $ExitStatusShell -eq 0 ]]; then
echo -e "更新scripts成功...\n"
[ ! -d $ScriptsDir/node_modules ] && Npm_Install scripts
[ -f $ScriptsDir/package.json ] && ScriptsDependNew=$(cat $ScriptsDir/package.json)
[[ "$ScriptsDependOld" != "$ScriptsDependNew" ]] && cd $ScriptsDir && Npm_Install scripts
Diff_Cron
if [ -s $ListJsDrop ]; then
Output_ListJs $ListJsDrop "失效"
Del_Cron
fi
if [ -s $ListJsAdd ]; then
Output_ListJs $ListJsAdd "新"
Add_Cron
fi
else
echo -e "更新scripts失败请检查原因...\n"
fi
}
Diff_Cron() {
cat $ListCronRemote | grep -E "node.+j[drx]_\w+\.js" | perl -pe "s|.+(j[drx]_\w+)\.js.+|\1|" | sort -u >$ListRemoteTask
cat $ListCronCurrent | grep -E "$ShellJs j[drx]_\w+" | perl -pe "s|.*$ShellJs (j[drx]_\w+)\.*|\1|" | sort -u >$ListCurrentTask
if [ -s $ListCurrentTask ]; then
grep -vwf $ListCurrentTask $ListRemoteTask >$ListJsAdd
else
cp -f $ListRemoteTask $ListJsAdd
fi
if [ -s $ListRemoteTask ]; then
grep -vwf $ListRemoteTask $ListCurrentTask >$ListJsDrop
else
cp -f $ListCurrentTask $ListJsDrop
fi
}
Del_Cron() {
if [ $AutoDelCron == true ] && [ -s $ListJsDrop ]; then
echo -e "开始尝试自动删除定时任务如下:\n"
cat $ListJsDrop
echo
JsDrop=$(cat $ListJsDrop)
for Cron in $JsDrop; do
perl -i -ne "{print unless / $Cron( |$)/}" $ListCronCurrent
done
crontab $ListCronCurrent
echo -e "成功删除失效的脚本与定时任务\n"
notify "删除 lxk0301 失效脚本" "$JsDrop"
fi
}
Add_Cron() {
if [ $AutoAddCron == true ] && [ -s $ListJsAdd ]; then
echo -e "开始尝试自动添加定时任务\n"
JsAdd=$(cat $ListJsAdd)
for Cron in $JsAdd; do
if [[ $Cron == jd_bean_sign ]]; then
echo "4 0,9 * * * $ShellJs $Cron" >> $ListCronCurrent
else
cat ${ListCronLxk} | grep -E "\/${Cron}\." | perl -pe "s|(^.+)node */scripts/(j[drx]_\w+)\.js.+|\1${ShellJs} \2|" >> ${ListCron}
cat $ListCronRemote | grep -E "\/$Cron\." | perl -pe "s|(^.+)node */scripts/(j[drx]_\w+)\.js.+|\1$ShellJs \2|" >> $ListCronCurrent
fi
done
if [ $? -eq 0 ]
then
crontab ${ListCron}
echo -e "成功添加新的定时任务,当前的定时任务清单如下:\n\n--------------------------------------------------------------\n"
crontab -l
echo -e "\n--------------------------------------------------------------\n"
if [ -d ${ScriptsDir}/node_modules ]; then
notify "新增 lxk0301 自定义脚本" "${JsAdd}"
fi
if [ $? -eq 0 ]; then
crontab $ListCronCurrent
echo -e "成功添加新的定时任务...\n"
notify "新增lxk0301脚本" "$JsAdd"
else
echo -e "添加新的定时任务出错,请手动添加...\n"
if [ -d ${ScriptsDir}/node_modules ]; then
notify "尝试自动添加 lxk0301 以下新的定时任务出错,请手动添加:" "${JsAdd}"
fi
notify "尝试自动添加lxk0301以下新的定时任务出错请手动添加" "$JsAdd"
fi
fi
}
## 在日志中记录时间与路径
## 输出定时任务变化
Output_ListJs() {
local list=$1
local type=$2
if [ -s $list ]; then
echo -e "检测到有$type的定时任务\n"
cat $list
echo
fi
}
#################################################################################################################################
echo -e "\n--------------------------------------------------------------\n"
echo -n "系统时间:"
echo $(date "+%Y-%m-%d %H:%M:%S")
if [ "${TZ}" = "UTC" ]; then
echo
echo -n "北京时间:"
echo $(date -d "8 hour" "+%Y-%m-%d %H:%M:%S")
fi
echo -e "\nJS脚本目录${ScriptsDir}\n"
echo -e "\nJS脚本目录$ScriptsDir\n"
echo -e "--------------------------------------------------------------\n"
## 导入配置更新cron设置url更新shell复制sample复制entrypoint发送新配置通知
Import_Conf "git_pull"
Update_Cron
[ -f ${ShellDir}/panel/package.json ] && PanelDependOld=$(cat ${ShellDir}/panel/package.json)
Git_PullShell
[ -f ${ShellDir}/panel/package.json ] && PanelDependNew=$(cat ${ShellDir}/panel/package.json)
Git_PullShellNext
Import_Conf
Random_Pull_Cron
## 克隆或更新js脚本
[ -f ${ScriptsDir}/package.json ] && ScriptsDependOld=$(cat ${ScriptsDir}/package.json)
[ -d ${ScriptsDir}/.git ] && Git_PullScripts || Git_CloneScripts
[ -f ${ScriptsDir}/package.json ] && ScriptsDependNew=$(cat ${ScriptsDir}/package.json)
# 更新shell
[ -f $ShellDir/package.json ] && PanelDependOld=$(cat $ShellDir/package.json)
Git_Pull_Shell
Git_Pull_Shell_Next
## 执行各函数
if [[ ${ExitStatusScripts} -eq 0 ]]
then
echo -e "更新scripts成功...\n"
Diff_Cron
[[ "${ScriptsDependOld}" != "${ScriptsDependNew}" ]] && cd ${ScriptsDir} && Npm_Install scripts
Output_ListJsAdd
Output_ListJsDrop
Del_Cron
Add_Cron
else
echo -e "更新scripts失败请检查原因...\n"
fi
## 更新scripts
[ -f $ScriptsDir/package.json ] && ScriptsDependOld=$(cat $ScriptsDir/package.json)
Git_Pull_Scripts
Git_Pull_Scripts_Next
## 调用用户自定义的diy.sh
if [[ ${EnableExtraShell} == true ]]; then
if [ -f ${FileDiy} ]
then
. ${FileDiy}
## 调用用户自定义的extra.sh
if [[ $EnableExtraShell == true ]]; then
if [ -f $ExtraShell ]; then
. $ExtraShell
else
echo -e "${FileDiy} 文件不存在跳过执行DIY脚本...\n"
echo -e "$ExtraShell 文件不存在跳过执行DIY脚本...\n"
fi
fi

View File

@ -8,7 +8,7 @@ body {
.code-mirror-wrapper .CodeMirror {
position: absolute;
height: calc(100% - 24px);
height: calc(100% - 48px);
width: 100%;
}
@ -19,5 +19,14 @@ body {
overflow: auto;
height: calc(100vh - 96px);
background-color: #fff;
padding: 24px;
}
}
@media (max-width: 768px) {
.ant-pro-grid-content.wide {
.ant-pro-page-container-children-content {
height: calc(100vh - 144px);
}
}
}

View File

@ -39,11 +39,19 @@ export default function (props: any) {
const theme = localStorage.getItem('qinglong_dark_theme') || 'auto';
setFetchMethod(window.fetch);
if (theme === 'dark') {
enableDarkMode({ darkSchemeTextColor: '#fff' });
enableDarkMode({
brightness: 100,
contrast: 90,
sepia: 10,
});
} else if (theme === 'light') {
disableDarkMode();
} else {
followSystemColorScheme({ darkSchemeTextColor: '#fff' });
followSystemColorScheme({
brightness: 100,
contrast: 90,
sepia: 10,
});
}
}, []);

View File

@ -17,7 +17,7 @@ const Crontab = () => {
request
.get(`${config.apiPrefix}config/shareCode`)
.then((data) => {
setValue(data.content);
setValue(data.data);
})
.finally(() => setLoading(false));
};

View File

@ -4,7 +4,6 @@ import config from '@/utils/config';
import { PageContainer } from '@ant-design/pro-layout';
import { Controlled as CodeMirror } from 'react-codemirror2';
import { request } from '@/utils/http';
import QRCode from 'qrcode.react';
const Config = () => {
const [width, setWdith] = useState('100%');
@ -18,7 +17,7 @@ const Config = () => {
request
.get(`${config.apiPrefix}config/config`)
.then((data) => {
setValue(data.content);
setValue(data.data);
})
.finally(() => setLoading(false));
};

View File

@ -1,5 +1,13 @@
import React, { PureComponent, Fragment, useState, useEffect } from 'react';
import { Button, notification, Modal, Table, Tag, Space } from 'antd';
import {
Button,
notification,
Modal,
Table,
Tag,
Space,
Typography,
} from 'antd';
import { EditOutlined, DeleteOutlined } from '@ant-design/icons';
import config from '@/utils/config';
import { PageContainer } from '@ant-design/pro-layout';
@ -7,6 +15,8 @@ import { request } from '@/utils/http';
import QRCode from 'qrcode.react';
import CookieModal from './modal';
const { Text } = Typography;
enum Status {
'正常',
'失效',
@ -197,7 +207,11 @@ const Config = () => {
const deleteCookie = (record: any, index: number) => {
Modal.confirm({
title: '确认删除',
content: `确认删除Cookie ${record.cookie}`,
content: (
<>
Cookie <Text type="warning">{record.cookie}</Text>
</>
),
onOk() {
request
.delete(`${config.apiPrefix}cookie`, {
@ -270,7 +284,11 @@ const Config = () => {
>
<Table
columns={columns}
pagination={{ hideOnSinglePage: true }}
pagination={{
hideOnSinglePage: true,
showSizeChanger: true,
defaultPageSize: 20,
}}
dataSource={value}
rowKey="pin"
size="middle"

View File

@ -16,7 +16,7 @@ const Crontab = () => {
const getConfig = () => {
request.get(`${config.apiPrefix}config/config`).then((data) => {
setValue(data.content);
setValue(data.data);
});
};
@ -25,7 +25,7 @@ const Crontab = () => {
request
.get(`${config.apiPrefix}config/sample`)
.then((data) => {
setSample(data.content);
setSample(data.data);
})
.finally(() => setLoading(false));
};

View File

@ -17,7 +17,7 @@ const Crontab = () => {
request
.get(`${config.apiPrefix}config/diy`)
.then((data) => {
setValue(data.content);
setValue(data.data);
})
.finally(() => setLoading(false));
};