script/tera/run.sh
MiaoWoo 51a2c6b6ed feat: force download node
Signed-off-by: MiaoWoo <admin@yumc.pw>
2019-07-10 00:54:41 +08:00

142 lines
4.5 KiB
Bash

#!/bin/bash
SHELL_PREFIX="[OneKeyTera]"
# Shell Base Script
set -e
c_red="\033[38;5;1m"
c_blue="\033[38;5;4m"
c_green="\033[38;5;2m"
c_reset="\033[0m"
c_yellow="\033[38;5;3m"
c_prefix="${c_green}${SHELL_PREFIX}>>${c_reset}"
dateStr() {
echo -e "[$(date '+%H:%M:%S')]"
}
info() {
echo -e "$(dateStr)${c_prefix} ${*}"
}
warn() {
echo -e "$(dateStr)${c_prefix} ${c_yellow}${*}${c_reset}"
}
error() {
echo -e "$(dateStr)${c_prefix} ${c_red}${*}${c_reset}"
}
#====================
ROOT=$(pwd)
clear
set -e
info "=============================="
info " 欢迎使用 Tera 一键挖矿系统"
info ""
info " by MiaoWoo"
info ""
info " 版本 v1.1"
info "=============================="
if [[ ! -f "OneKeyTera.sh" || ! -f ".lock" || $(cat .lock) -lt $(($(date +%s) - 86400)) ]]; then
info "更新脚本..."
curl -o OneKeyTera.sh https://git.yumc.pw/cloud/script/raw/master/tera/run.sh
echo $(date +%s) > .lock
bash OneKeyTera.sh
exit 0
fi
info "程序将在 3秒 后运行... Ctrl + C 取消运行..."
sleep 2
info "开始检测运行环境..."
if [[ ! -d node ]]; then
warn "未安装NodeJS 开始下载二进制包 请稍候..."
info "下载过程根据您的网络状况可能需要 1-10 分钟..."
curl -o node.zip https://nodejs.org/dist/v10.16.0/node-v10.16.0-win-x64.zip
info "下载完成 开始解压Node环境 请稍候..."
unzip -q node.zip
mv node-v10.16.0-win-x64 node
rm -rf node.zip
fi
NODE=$(pwd)/node/node.exe
NPM=$(pwd)/node/npm
if [[ ! -f "${NODE}" ]]; then
error "Node 安装检测未通过 请检查网络是否正常 或删除 node 目录 重新运行本脚本..."
read
exit 1
fi
echo "NodeJS 二进制版本: $(${NODE} -v)"
if [[ ! -d tera ]]; then
warn "未找到 Tera 源代码 开始Clone项目 请稍候..."
info "下载过程根据您的网络状况可能需要 1-5 分钟..."
git clone https://git.yumc.pw/502647092/tera.git
fi
TERA_ROOT=${ROOT}/tera/Source
cd "${TERA_ROOT}"
if [[ ! -d node_modules ]]; then
warn "未安装依赖 开始安装 请稍候..."
info "设置镜像源为 https://registry.npm.taobao.org"
"${NPM}" config set registry https://registry.npm.taobao.org
info "安装过程根据您的网络状况可能需要 1-5 分钟..."
"${NPM}" install
fi
if [[ ! -f "${TERA_ROOT}/node_modules/secp256k1/build/Release/secp256k1.node" ]]; then
warn "未检测到 secp256k1.node 模块 开始下载 Windows 版本..."
mkdir -p "${TERA_ROOT}/node_modules/secp256k1/build/Release"
curl -o "${TERA_ROOT}/node_modules/secp256k1/build/Release/secp256k1.node" https://git.yumc.pw/cloud/script/raw/master/tera/secp256k1.node
fi
# 申请公网IP端口
info "开始申请公网IP端口 请稍候..."
warn "公网IP端口自动映射功能开发中..."
# FRP_SCRIPT=${TERA_ROOT}/frp.js
# if [[ ! -f ${FRP_SCRIPT} ]]; then
# echo "开始下载FRP脚本 请稍候..."
# #curl -o ${FRP_SCRIPT} https://git.yumc.pw/cloud/script/raw/master/tera/frp.js
# fi
# ${NODE} ${FRP_SCRIPT}
# 初始化配置
info "初始化配置参数..."
INIT_SCRIPT=${TERA_ROOT}/init.js
if [[ ! -f ${INIT_SCRIPT} ]]; then
warn "开始下载初始化脚本 请稍候..."
curl -o ${INIT_SCRIPT} https://git.yumc.pw/cloud/script/raw/master/tera/init.js
fi
"${NODE}" ${INIT_SCRIPT}
# 设置NTP服务器
TERA_NTP_SERVER=${TERA_NTP_SERVER:-ntp1.aliyun.com}
info "设置NTP服务器为阿里云地址 ${TERA_NTP_SERVER}"
sed -i s@pool.ntp.org@${TERA_NTP_SERVER}@g ${TERA_ROOT}/core/library.js
info "开始检测是否存在遗留Node进程..."
NODE_RUNNING=$(ps -ef | grep node | awk '{print $2}')
if [[ -n "${NODE_RUNNING}" ]]; then
warn "检测到已经在运行的 node 进程 PID 为 ${NODE_RUNNING} ..."
warn "程序将在 5 秒 后自动关闭所有的 node 进程 ..."
warn "终止执行 请按 Ctrl + C 退出 ..."
sleep 5
set +e
kill -9 ${NODE_RUNNING}
if [[ $? == "0" ]]; then
info "进程已关闭 开始执行后续操作..."
else
error "关闭失败 若提示 Permission denied 请以管理员权限重新运行..."
fi
set -e
fi
info "开始启动挖矿进程..."
echo "setTimeout(()=>require('child_process').exec('start http://127.0.0.1'), 3000)" > temp.js
"${NODE}" temp.js && info "启动完成 打开系统默认浏览器..." && rm -rf temp.js &
while true; do
"${NODE}" run-node.js
warn "程序已关闭 将在3秒后重启 Ctrl + C 取消运行..."
sleep 3
clear
done
info "程序运行完成 按任意键继续..."
read ANYKEY