#!/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 [[ -z "$(which node)" ]]; then 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 else NODE=node NPM=npm 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_RUNNING=$(ps -ef | grep node | awk '{print $2}') if [[ -n "${NODE_RUNNING}" ]]; then warn "检测到已经在运行的 node 进程 PID 为 ${NODE_RUNNING} ..." warn "程序将在 5 秒 后自动关闭所有的 node 进程 终止执行 请按 Ctrl + C 退出..." sleep 5 kill -9 ${NODE_RUNNING} fi echo "setTimeout(()=>require('child_process').exec('start http://127.0.0.1'), 5000)" > 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