tari.sh 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/bin/bash
  2. ## https://github.com/tari-project/tari/releases
  3. PASSWD="${1:-}"
  4. AMOUNT="${2:-0}"
  5. TARGET="${3:-}"
  6. BASE="${4:-.tari}"
  7. TARICMD=""
  8. TXSEND=""
  9. RESERVED=""
  10. cd "$(dirname `readlink -f "$0"`)" || exit 1
  11. [ -d "${BASE}/mainnet/libtor" ] && rm -rf "${BASE}/mainnet/libtor"
  12. [ -d "${BASE}/mainnet/log" ] && rm -rf "${BASE}/mainnet/log"
  13. [ -d "${BASE}/mainnet/peer_db" ] && rm -rf "${BASE}/mainnet/peer_db"
  14. [ "$AMOUNT" == "update" ] && {
  15. command -v wget >/dev/null || exit 1
  16. command -v 7z >/dev/null || exit 1
  17. case `uname -m` in aarch64|arm64) ARCH="arm64";; x86_64|amd64) ARCH="x86_64";; *) exit 1;; esac;
  18. version=`echo "$TARGET" |grep -o '^v[0-9]\+\.[0-9]\+\.[0-9]\+'`
  19. [ -n "$version" ] && version="tags/${version}" || version="latest"
  20. result=`wget --no-check-certificate -qO- "https://api.github.com/repos/tari-project/tari/releases/${version}"`
  21. url=`echo "$result" |grep '"browser_download_url":' |grep 'tari_suite-[0-9]' |grep 'linux' |grep -v '.sha256' |grep "${ARCH}" |cut -d'"' -f4`
  22. [ -n "$url" ] || exit 1
  23. tmpPath=`mktemp -d`
  24. trap "rm -rf ${tmpPath}" EXIT
  25. wget --no-check-certificate -qO "${tmpPath}/tari_suite.zip" "${url}" || exit 1
  26. 7z e "${tmpPath}/tari_suite.zip" "minotari_console_wallet" -o"${tmpPath}"
  27. [ -f "${tmpPath}/minotari_console_wallet" ] || exit 1
  28. cp -rf "${tmpPath}/minotari_console_wallet" "./minotari_console_wallet" || exit 1
  29. chmod 777 "./minotari_console_wallet"
  30. exit "$?"
  31. }
  32. [ -f "./minotari_console_wallet" ] || exit 1
  33. [ "$AMOUNT" == "new" ] && {
  34. seedFile=`mktemp`; trap "rm -rf ${seedFile}" EXIT
  35. ./minotari_console_wallet --non-interactive-mode --network Mainnet --base-path "${BASE}" --seed-words-file-name "${seedFile}" --password "${PASSWD}"
  36. [ $? -eq 0 ] || exit 1
  37. rm -rf "${BASE}"
  38. TARGET=`cat "${seedFile}"`
  39. ./minotari_console_wallet --non-interactive-mode --network Mainnet --base-path "${BASE}" -p base_node.mining_enabled=false -p wallet.grpc_enabled=false --password "${PASSWD}" --recovery --seed-words "${TARGET}"
  40. [ $? -eq 0 ] && echo -e "\n\n\033[32mNew Wallet Seed\033[0m: \033[31m${TARGET}\033[0m\n\n\n" && exit 0 || exit 1
  41. }
  42. [ "$AMOUNT" == "seed" ] && {
  43. ./minotari_console_wallet --non-interactive-mode --network Mainnet --base-path "${BASE}" -p base_node.mining_enabled=false -p wallet.grpc_enabled=false --password "${PASSWD}" --recovery --seed-words "${TARGET}"
  44. exit "$?"
  45. }
  46. [ "$AMOUNT" == "ui" ] && {
  47. ./minotari_console_wallet --network Mainnet --base-path "${BASE}" -p base_node.mining_enabled=false -p wallet.grpc_enabled=false --password "${PASSWD}"
  48. exit "$?"
  49. }
  50. result=`./minotari_console_wallet --non-interactive-mode --network Mainnet --base-path "${BASE}" -p base_node.mining_enabled=false -p wallet.grpc_enabled=false --password "${PASSWD}" --command-mode-auto-exit sync 2>/dev/null`
  51. block=`echo "$result" |grep -o '^Completed! Height: [0-9]\+,' |grep -o '[0-9]\+'`
  52. echo "[$(date '+%Y/%m/%d %H:%M:%S')]"
  53. [ -n "$block" ] && [ "$block" -gt "0" ] && echo "Sync Block: ${block}"
  54. echo "$result" |grep '^Available balance:\|^Pending incoming balance:\|^Pending outgoing balance:'
  55. amount=`echo "$result" |grep '^Available balance:' |grep ' T$' |grep -o '[0-9]\+' |head -n1`
  56. [ -n "$amount" ] && [ "$amount" -gt "0" ] || exit 1
  57. [ -n "$AMOUNT" ] || AMOUNT="0"
  58. [ "$AMOUNT" -eq "0" ] && exit 0
  59. [ "$AMOUNT" -gt "0" ] && [ "$AMOUNT" -ge "$amount" ] && AMOUNT="$amount"
  60. [ "$AMOUNT" -eq "-1" ] && AMOUNT="$amount"
  61. [ "$AMOUNT" -le "-2" ] && MINAMOUNT="$((10 ** -AMOUNT))" && [ "$((amount - MINAMOUNT))" -ge "0" ] && AMOUNT="$amount"
  62. [ "$AMOUNT" -le "0" ] && exit 1
  63. [ -n "$RESERVED" ] && [ "$RESERVED" -gt "0" ] && [ "$AMOUNT" -gt "0" ] && AMOUNT="$((AMOUNT - RESERVED))"
  64. [ -n "$TARGET" ] || exit 2
  65. [ ! -n "$TARICMD" ] && [ "${#TARGET}" -eq "91" ] && TARICMD="send-minotari"
  66. [ ! -n "$TARICMD" ] && [ "${#TARGET}" -gt "91" ] && TARICMD="send-one-sided-to-stealth-address"
  67. [ -n "$TARICMD" ] || exit 2
  68. result=`./minotari_console_wallet --non-interactive-mode --network Mainnet --base-path "${BASE}" -p base_node.mining_enabled=false -p wallet.grpc_enabled=false --password "${PASSWD}" --command-mode-auto-exit "${TARICMD}" "${AMOUNT}T" "${TARGET}" 2>&1`
  69. TxID=`echo "$result" |grep '^Transaction ID:' |grep -o '[0-9]\+'`
  70. [ -n "$TxID" ] && {
  71. echo -e "Sending: ${AMOUNT} XTM --> ${TARGET}\nTxID[$(date '+%Y/%m/%d %H:%M:%S')]: ${TxID}\n"
  72. [ -n "${TXSEND}" ] && echo "[$(date '+%Y/%m/%d %H:%M:%S')] ${block} ${TxID} ${AMOUNT} ${TARGET}" >>"${TXSEND}"
  73. exit 0
  74. }
  75. exit 1