Files
early-concept/accept_deal.sh
2024-04-23 13:56:26 +03:00

87 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
set -xue
. ./config.sh
PREV_ID=$(cat "$DEALS_PREV_MESSAGE_ID_FOR_ACCEPT" || echo "")
NEW_PREV_ID_FILE="${DEALS_PREV_MESSAGE_ID_FOR_ACCEPT}.new"
TEXT_FILE="${DEALS_BASE}/accept_message.txt"
SENDER_FILE="${DEALS_BASE}/sender.txt"
python get_bm_message.py \
--to-address "$DEALS_BM_TO_ACCEPT_DEALS" \
--from-address "$SENDER_FILE" \
--prev-id "$PREV_ID" \
--output-id "$NEW_PREV_ID_FILE" \
--output-text "$TEXT_FILE"
if [ ! -f "$NEW_PREV_ID_FILE" ]; then
echo "No new messages"
exit 0
fi
# BM message id is used as deal ID.
DEAL_ID=$(cat "$NEW_PREV_ID_FILE")
mv "$NEW_PREV_ID_FILE" "$DEALS_PREV_MESSAGE_ID_FOR_ACCEPT"
mkdir -p "$DEALS_INPUTS_DB_ROOT"
INPUT_FILE="${DEALS_INPUTS_DB_ROOT}/${DEAL_ID}"
mv "$TEXT_FILE" "$INPUT_FILE"
PAYER_BTC=$(grep "payer_btc: " "$INPUT_FILE" | sed "s/^payer_btc: //" | sed 's/"//g' | sed "s/'//g")
PAYEE_BTC=$(grep "payee_btc: " "$INPUT_FILE" | sed "s/^payee_btc: //" | sed 's/"//g' | sed "s/'//g")
AMOUNT=$(grep "amount: " "$INPUT_FILE" | sed "s/^amount: //" | sed 's/"//g' | sed "s/'//g" | sed "s/ BTC$//" )
MEMO="deposit for deal ${DEAL_ID}"
mkdir -p "$DEALS_PAYER_BTC"
mkdir -p "$DEALS_PAYEE_BTC"
echo "$PAYER_BTC" > "${DEALS_PAYER_BTC}/${DEAL_ID}"
echo "$PAYEE_BTC" > "${DEALS_PAYEE_BTC}/${DEAL_ID}"
NOW=$(date +"%s")
NOW_STR=$(date -u "-d@${NOW}")
EXPIRATION=$(($NOW + $DEALS_DEPOSIT_TIMEOUT))
EXPIRATION_STR=$(date -u "-d@${EXPIRATION}")
mkdir -p "$DEALS_REQUEST_DB_ROOT"
REQUEST_FILE="${DEALS_REQUEST_DB_ROOT}/${DEAL_ID}"
if [ -f "$REQUEST_FILE" ] ; then
echo "File ${REQUEST_FILE} already exists"
exit 1
fi
$ELECTRUM addrequest "$AMOUNT" -m "$MEMO" --expiration "$DEALS_DEPOSIT_TIMEOUT" > "$REQUEST_FILE"
DEPOSIT_ADDRESS=$(cat "$REQUEST_FILE" | grep '"address": ' | sed 's/"address": //' | sed 's/[ ",]//g')
APPROVED_DEAL="${DEALS_BASE}/approved_deal.txt"
cp "$INPUT_FILE" "$APPROVED_DEAL"
echo '' >> "$APPROVED_DEAL"
echo "deal: ${DEAL_ID}" >> "$APPROVED_DEAL"
echo "to_bitcoin: ${DEPOSIT_ADDRESS}" >> "$APPROVED_DEAL"
echo "date: '${NOW_STR}'" >> "$APPROVED_DEAL"
echo "pay_until: '${EXPIRATION_STR}'" >> "$APPROVED_DEAL"
mkdir -p "$DEALS_SIGNED_APPROVED_DEALS_DB_ROOT"
SIGNED_FILE="${DEALS_SIGNED_APPROVED_DEALS_DB_ROOT}/${DEAL_ID}"
if [ -f "$SIGNED_FILE" ] ; then
echo "File ${SIGNED_FILE} already exists"
exit 1
fi
mkdir -p "$DEALS_DEAL_SENDERS"
cp "$SENDER_FILE" "${DEALS_DEAL_SENDERS}/${DEAL_ID}"
gpg -o "$SIGNED_FILE" --sign-with="$DEALS_PGP_TO_ACK_DEAL" --clear-sign "$APPROVED_DEAL"
python send_bm_message.py \
--from-address "$DEALS_BM_TO_ACCEPT_DEALS" \
--to-address "$(cat "$SENDER_FILE" )" \
--subject "" \
--message-file "$SIGNED_FILE"