mirror of
https://github.com/aljazceru/cyphernode.git
synced 2025-12-25 08:35:12 +01:00
More LN, more robust, more info
This commit is contained in:
@@ -11,13 +11,13 @@ ln_create_invoice()
|
||||
local request=${1}
|
||||
local msatoshi=$(echo "${request}" | jq ".msatoshi" | tr -d '"')
|
||||
trace "[ln_create_invoice] msatoshi=${msatoshi}"
|
||||
local label=$(echo "${request}" | jq ".label")
|
||||
local label=$(echo "${request}" | jq ".label" | tr -d '"')
|
||||
trace "[ln_create_invoice] label=${label}"
|
||||
local description=$(echo "${request}" | jq ".description")
|
||||
local description=$(echo "${request}" | jq ".description" | tr -d '"')
|
||||
trace "[ln_create_invoice] description=${description}"
|
||||
local expiry=$(echo "${request}" | jq ".expiry" | tr -d '"')
|
||||
trace "[ln_create_invoice] expiry=${expiry}"
|
||||
local callback_url=$(echo "${request}" | jq ".callback_url" | tr -d '"')
|
||||
local callback_url=$(echo "${request}" | jq ".callbackUrl" | tr -d '"')
|
||||
trace "[ln_create_invoice] callback_url=${callback_url}"
|
||||
|
||||
#/proxy $ ./lightning-cli invoice 10000 "t1" "t1d" 60
|
||||
@@ -27,15 +27,20 @@ ln_create_invoice()
|
||||
# "bolt11": "lnbc100n1pwzllqgpp55a8xen9sdcntehwr93pkwnuu8nmtqx9yew0flalcxhx9nvy34crqdq9wsckgxqzpucqp2rzjqt04ll5ft3mcuy8hws4xcku2pnhma9r9mavtjtadawyrw5kgzp7g7zr745qq3mcqqyqqqqlgqqqqqzsqpcr85k33shzaxscpj29fadmjmfej6y2p380x9w4kxydqpxq87l6lshy69fry9q2yrtu037nt44x77uhzkdyn8043n5yj8tqgluvmcl69cquaxr68"
|
||||
#}
|
||||
|
||||
trace "[ln_create_invoice] ./lightning-cli invoice ${msatoshi} \"${label}\" \${description}\" ${expiry}"
|
||||
result=$(./lightning-cli invoice ${msatoshi} "${label}" "${description}" ${expiry})
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
trace "[ln_create_invoice] result=${result}"
|
||||
|
||||
local bolt11
|
||||
bolt11=$(echo ${result} | jq ".bolt11" | tr -d '"')
|
||||
local bolt11=$(echo ${result} | jq ".bolt11" | tr -d '"')
|
||||
trace "[ln_create_invoice] bolt11=${bolt11}"
|
||||
sql "INSERT OR IGNORE INTO ln_invoice (bolt11, callback_url) VALUES (\"${bolt11}\", \"${callback_url}\")"
|
||||
local payment_hash=$(echo ${result} | jq ".payment_hash" | tr -d '"')
|
||||
trace "[ln_create_invoice] payment_hash=${payment_hash}"
|
||||
local expires_at=$(echo ${result} | jq ".expires_at" | tr -d '"')
|
||||
trace "[ln_create_invoice] expires_at=${expires_at}"
|
||||
|
||||
sql "INSERT OR IGNORE INTO ln_invoice (label, bolt11, callback_url, payment_hash, expires_at, msatoshi, description, status) VALUES (\"${label}\", \"${bolt11}\", \"${callback_url}\", \"${payment_hash}\", ${expires_at}, ${msatoshi}, \"${description}\", \"unpaid\")"
|
||||
trace_rc $?
|
||||
|
||||
echo "${result}"
|
||||
@@ -75,6 +80,22 @@ ln_getinvoice() {
|
||||
return ${returncode}
|
||||
}
|
||||
|
||||
ln_delinvoice() {
|
||||
trace "Entering ln_delinvoice()..."
|
||||
|
||||
local label=${1}
|
||||
local result
|
||||
|
||||
result=$(./lightning-cli delinvoice ${label} "unpaid")
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
trace "[ln_delinvoice] result=${result}"
|
||||
|
||||
echo "${result}"
|
||||
|
||||
return ${returncode}
|
||||
}
|
||||
|
||||
ln_decodebolt11() {
|
||||
trace "Entering ln_decodebolt11()..."
|
||||
|
||||
|
||||
@@ -44,29 +44,86 @@ do_callbacks()
|
||||
fi
|
||||
done
|
||||
|
||||
callbacks=$(sql 'SELECT id, callback_url FROM ln_invoice WHERE NOT calledback AND callback_failed')
|
||||
trace "[do_callbacks] ln_callbacks=${callbacks}"
|
||||
callbacks=$(sql "SELECT id, label, bolt11, callback_url, payment_hash, msatoshi, status, pay_index, msatoshi_received, paid_at, description, expires_at FROM ln_invoice WHERE NOT calledback AND callback_failed")
|
||||
trace "[do_callbacks LN] ln_callbacks=${callbacks}"
|
||||
|
||||
for row in ${callbacks}
|
||||
do
|
||||
url=$(echo "${row}" | cut -d '|' -f2)
|
||||
trace "[do_callbacks LN] url=${url}"
|
||||
|
||||
trace "[do_callbacks LN] curl -H \"X-Forwarded-Proto: https\" ${url}"
|
||||
curl -H "X-Forwarded-Proto: https" ${url}
|
||||
returncode=$?
|
||||
if [ "${returncode}" -eq 0 ]; then
|
||||
id=$(echo "${row}" | cut -d '|' -f1)
|
||||
sql "UPDATE ln_invoice SET calledback=1,callback_failed=0 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
else
|
||||
trace "[do_callbacks LN] callback failed: ${callback_url}"
|
||||
fi
|
||||
ln_manage_callback ${row}
|
||||
trace_rc $?
|
||||
done
|
||||
|
||||
) 200>./.callbacks.lock
|
||||
}
|
||||
|
||||
ln_manage_callback() {
|
||||
trace "Entering ln_manage_callback()..."
|
||||
|
||||
local row=$@
|
||||
trace "[ln_manage_callback] row=${row}"
|
||||
|
||||
local id=$(echo "${row}" | cut -d '|' -f1)
|
||||
trace "[ln_manage_callback] id=${id}"
|
||||
local label=$(echo "${row}" | cut -d '|' -f2)
|
||||
trace "[ln_manage_callback] label=${label}"
|
||||
local bolt11=$(echo "${row}" | cut -d '|' -f3)
|
||||
trace "[ln_manage_callback] bolt11=${bolt11}"
|
||||
local callback_url=$(echo "${row}" | cut -d '|' -f4)
|
||||
trace "[ln_manage_callback] callback_url=${callback_url}"
|
||||
local payment_hash=$(echo "${row}" | cut -d '|' -f5)
|
||||
trace "[ln_manage_callback] payment_hash=${payment_hash}"
|
||||
local msatoshi=$(echo "${row}" | cut -d '|' -f6)
|
||||
trace "[ln_manage_callback] msatoshi=${msatoshi}"
|
||||
local status=$(echo "${row}" | cut -d '|' -f7)
|
||||
trace "[ln_manage_callback] status=${status}"
|
||||
local pay_index=$(echo "${row}" | cut -d '|' -f8)
|
||||
trace "[ln_manage_callback] pay_index=${pay_index}"
|
||||
local msatoshi_received=$(echo "${row}" | cut -d '|' -f9)
|
||||
trace "[ln_manage_callback] msatoshi_received=${msatoshi_received}"
|
||||
local paid_at=$(echo "${row}" | cut -d '|' -f10)
|
||||
trace "[ln_manage_callback] paid_at=${paid_at}"
|
||||
local description=$(echo "${row}" | cut -d '|' -f11)
|
||||
trace "[ln_manage_callback] description=${description}"
|
||||
local expires_at=$(echo "${row}" | cut -d '|' -f12)
|
||||
trace "[ln_manage_callback] expires_at=${expires_at}"
|
||||
local returncode
|
||||
|
||||
if [ -z "${callback_url}" ]; then
|
||||
# No callback url provided for that invoice
|
||||
sql "UPDATE ln_invoice SET calledback=1 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
return
|
||||
fi
|
||||
|
||||
data="{\"id\":\"${id}\","
|
||||
data="${data}\"label\":\"${label}\","
|
||||
data="${data}\"bolt11\":\"${bolt11}\","
|
||||
data="${data}\"callback_url\":\"${callback_url}\","
|
||||
data="${data}\"payment_hash\":\"${payment_hash}\","
|
||||
data="${data}\"msatoshi\":${msatoshi},"
|
||||
data="${data}\"status\":\"${status}\","
|
||||
data="${data}\"pay_index\":${pay_index},"
|
||||
data="${data}\"msatoshi_received\":${msatoshi_received},"
|
||||
data="${data}\"paid_at\":${paid_at},"
|
||||
data="${data}\"description\":\"${description}\","
|
||||
data="${data}\"expires_at\":${expires_at}}"
|
||||
trace "[ln_manage_callback] data=${data}"
|
||||
|
||||
curl_callback "${callback_url}" "${data}"
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
if [ "${returncode}" -eq 0 ]; then
|
||||
sql "UPDATE ln_invoice SET calledback=1 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
else
|
||||
trace "[ln_manage_callback] callback failed: ${callback_url}"
|
||||
sql "UPDATE ln_invoice SET callback_failed=1 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
fi
|
||||
|
||||
return ${returncode}
|
||||
}
|
||||
|
||||
build_callback()
|
||||
{
|
||||
trace "Entering build_callback()..."
|
||||
@@ -182,7 +239,7 @@ curl_callback()
|
||||
local url=${1}
|
||||
local data=${2}
|
||||
|
||||
trace "[curl_callback] curl -H \"Content-Type: application/json\" -d \"${data}\" ${url}"
|
||||
trace "[curl_callback] curl -H \"Content-Type: application/json\" -H \"X-Forwarded-Proto: https\" -d \"${data}\" ${url}"
|
||||
curl -H "Content-Type: application/json" -H "X-Forwarded-Proto: https" -d "${data}" ${url}
|
||||
local returncode=$?
|
||||
trace_rc ${returncode}
|
||||
|
||||
@@ -289,6 +289,14 @@ main()
|
||||
response_to_client "${response}" ${?}
|
||||
break
|
||||
;;
|
||||
ln_delinvoice)
|
||||
# GET http://192.168.111.152:8080/ln_delinvoice/label
|
||||
# GET http://192.168.111.152:8080/ln_delinvoice/koNCcrSvhX3dmyFhW
|
||||
|
||||
response=$(ln_delinvoice $(echo "${line}" | cut -d ' ' -f2 | cut -d '/' -f3))
|
||||
response_to_client "${response}" ${?}
|
||||
break
|
||||
;;
|
||||
ln_decodebolt11)
|
||||
# GET http://192.168.111.152:8080/ln_decodebolt11/bolt11
|
||||
# GET http://192.168.111.152:8080/ln_decodebolt11/lntb1pdca82tpp5gv8mn5jqlj6xztpnt4r472zcyrwf3y2c3cvm4uzg2gqcnj90f83qdp2gf5hgcm0d9hzqnm4w3kx2apqdaexgetjyq3nwvpcxgcqp2g3d86wwdfvyxcz7kce7d3n26d2rw3wf5tzpm2m5fl2z3mm8msa3xk8nv2y32gmzlhwjved980mcmkgq83u9wafq9n4w28amnmwzujgqpmapcr3
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
. ./trace.sh
|
||||
. ./sql.sh
|
||||
. ./callbacks_job.sh
|
||||
|
||||
ln_waitanyinvoice() {
|
||||
trace "Entering ln_waitanyinvoice()..."
|
||||
@@ -36,45 +37,18 @@ ln_waitanyinvoice() {
|
||||
|
||||
bolt11=$(echo ${result} | jq ".bolt11" | tr -d '"')
|
||||
pay_index=$(echo ${result} | jq ".pay_index" | tr -d '"')
|
||||
msatoshi_received=$(echo ${result} | jq ".msatoshi_received" | tr -d '"')
|
||||
status=$(echo ${result} | jq ".status" | tr -d '"')
|
||||
paid_at=$(echo ${result} | jq ".paid_at" | tr -d '"')
|
||||
|
||||
row=$(sql "SELECT id, callback_url FROM ln_invoice WHERE NOT calledback AND bolt11=\"${bolt11}\"")
|
||||
sql "UPDATE ln_invoice SET status=\"${status}\", pay_index=${pay_index}, msatoshi_received=${msatoshi_received}, paid_at=${paid_at} WHERE bolt11=\"${bolt11}\""
|
||||
row=$(sql "SELECT id, label, bolt11, callback_url, payment_hash, msatoshi, status, pay_index, msatoshi_received, paid_at, description, expires_at FROM ln_invoice WHERE NOT calledback AND bolt11=\"${bolt11}\"")
|
||||
|
||||
id=$(echo ${row} | cut -d '|' -f1)
|
||||
callback_url=$(echo ${row} | cut -d '|' -f2)
|
||||
if [ -z "${callback_url}" ]; then
|
||||
# No callback url provided for that invoice
|
||||
sql "UPDATE ln_invoice SET calledback=1 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
return
|
||||
fi
|
||||
|
||||
ln_payment_callback ${callback_url}
|
||||
returncode=$?
|
||||
trace_rc ${returncode}
|
||||
if [ "${returncode}" -eq 0 ]; then
|
||||
sql "UPDATE ln_invoice SET calledback=1 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
else
|
||||
trace "[ln_waitanyinvoice] callback failed: ${callback_url}"
|
||||
sql "UPDATE ln_invoice SET callback_failed=1 WHERE id=\"${id}\""
|
||||
trace_rc $?
|
||||
if [ -n "${row}" ]; then
|
||||
ln_manage_callback ${row}
|
||||
fi
|
||||
|
||||
sql "UPDATE cyphernode_props SET value="${pay_index}" WHERE property=\"pay_index\""
|
||||
|
||||
}
|
||||
|
||||
ln_payment_callback() {
|
||||
trace "Entering ln_payment_callback()..."
|
||||
|
||||
local url=${1}
|
||||
|
||||
trace "[ln_payment_callback] curl ${url}"
|
||||
curl -H "X-Forwarded-Proto: https" ${url}
|
||||
local returncode=$?
|
||||
trace_rc ${returncode}
|
||||
|
||||
return ${returncode}
|
||||
}
|
||||
|
||||
while :
|
||||
@@ -82,5 +56,5 @@ do
|
||||
pay_index=$(sql "SELECT value FROM cyphernode_props WHERE property='pay_index'")
|
||||
trace "[waitanyinvoice] pay_index=${pay_index}"
|
||||
ln_waitanyinvoice ${pay_index}
|
||||
sleep 1
|
||||
sleep 5
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user