diff --git a/API/QRCODE.sh b/API/QRCODE.sh index 1a4d0a98..7764ef40 100755 --- a/API/QRCODE.sh +++ b/API/QRCODE.sh @@ -34,7 +34,34 @@ Server: Astroport.ONE Content-Type: text/html; charset=UTF-8 " -function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } + +# function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } + +function urldecode() { + local string="${1//+/ }" + printf '%b' "${string//%/\\x}" +} + +urlencode() { + local string="$1" + local length="${#string}" + local url_encoded="" + + for ((i = 0; i < length; i++)); do + local c="${string:i:1}" + case "$c" in + [a-zA-Z0-9.~_-]) + url_encoded+="$c" + ;; + *) + printf -v hex_val "%02X" "'$c" # Uppercase hex values + url_encoded+="%$hex_val" + ;; + esac + done + + echo "$url_encoded" +} ## GET TW mkdir -p ~/.zen/tmp/${MOATS}/ @@ -107,7 +134,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then echo "WHAT=${WHAT} VAL=${VAL}" ## Recreate GPG aes file - urldecode ${QRCODE} | tr '_' '+' | tr '-' '\n' | tr '~' '-' > ~/.zen/tmp/${MOATS}/disco.aes + urldecode "${QRCODE}" | tr '_' '+' | tr '-' '\n' | tr '~' '-' > ~/.zen/tmp/${MOATS}/disco.aes sed -i '$ d' ~/.zen/tmp/${MOATS}/disco.aes # Decoding echo "cat ~/.zen/tmp/${MOATS}/disco.aes | gpg -d --passphrase "${PASS}" --batch" @@ -131,8 +158,8 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then echo "${MY_PATH}/../tools/jaklis/jaklis.py balance -p ${G1PUB}" ${MY_PATH}/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${G1PUB}.curcoin cat ~/.zen/tmp/${G1PUB}.curcoin - CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1) - echo "CURRENT KEY : $CURCOINS G1" + CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | cut -d '.' -f 1) ## ROUNDED G1 COIN + echo "WALLET CONTAINS : $CURCOINS G1" [[ ${WHAT} == "" ]] && echo "
Missing amount
" >> ~/.zen/tmp/${MOATS}/disco [[ ${VAL} == "" || ${VAL} == "undefined" ]] && echo "
Missing Destination PublicKey
" >> ~/.zen/tmp/${MOATS}/disco @@ -143,66 +170,89 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then if [[ ${APPNAME} == "pay" ]]; then - if [[ ${WHAT} != "" && ${VAL} != "" && ${CURCOINS} != "null" && ${CURCOINS} != "" && ${CURCOINS} -gt ${WHAT} ]]; then - ## COMMAND A PAYMENT - if [[ ${WHAT} =~ ^[0-9]+$ ]]; then + if [[ ${WHAT} != "" && ${VAL} != "" && ${CURCOINS} != "null" && ${CURCOINS} != "" && ${CURCOINS} > ${WHAT} ]]; then + ## COMMAND A PAYMENT (less than 999.99) + if [[ ${WHAT} =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then ## CREATE game pending TX mkdir -p $HOME/.zen/game/pending/${G1PUB}/ - echo "UNKNOWN" > $HOME/.zen/game/pending/${G1PUB}/${MOATS}_${VAL}+${WHAT}.TX + PENDING="$HOME/.zen/game/pending/${G1PUB}/${MOATS}_${VAL}+${WHAT}.TX" + echo "UNKNOWN" > ${PENDING} ######################## ~/.zen/game/pending/*/*_G1WHO+*.TX + if [[ ! -f ~/.zen/game/pending/*/*_${VAL}+*.TX ]]; then + # MAKE PAYMENT + echo "${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/secret.key pay -a ${WHAT} -p ${VAL} -c 'G1CARD:${MOATS}' -m" + ${MY_PATH}/../tools/timeout.sh -t 5 \ + ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/secret.key pay -a ${WHAT} -p ${VAL} -c "G1CARD:${MOATS}" -m 2>&1 >> ~/.zen/tmp/${MOATS}/disco - echo "${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/secret.key pay -a ${WHAT} -p ${VAL} -c 'G1CARD:${MOATS}' -m" - ${MY_PATH}/../tools/timeout.sh -t 5 \ - ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/secret.key pay -a ${WHAT} -p ${VAL} -c "G1CARD:${MOATS}" -m 2>&1 >> ~/.zen/tmp/${MOATS}/disco + if [ $? == 0 ]; then + mv ${PENDING} ${PENDING}.SENT ## TODO MONITOR CHAIN REJECTION - #################################### SYSTEM IS NOT DUNITER OVER POOL RESISTANT + ## CHANGE COINS CACHE + COINSFILE="$HOME/.zen/tmp/coucou/${G1PUB}.COINS" + DESTFILE="$HOME/.zen/tmp/coucou/${VAL}.COINS" - if [ $? == 0 ]; then - echo "SENT" > $HOME/.zen/game/pending/${G1PUB}/${MOATS}_${VAL}+${WHAT}.TX - ## Make calculation - COINSFILE="$HOME/.zen/tmp/coucou/${G1PUB}.COINS" - DESTFILE="$HOME/.zen/tmp/coucou/${VAL}.COINS" + CUR=$(cat "${COINSFILE}") + if [[ ! -z "$CUR" && "$CUR" != "null" ]]; then + RESULT=$(echo "$CUR - $WHAT" | bc) + echo "$RESULT" > "${COINSFILE}" + else + echo "-${WHAT}" > "${COINSFILE}" + fi + cat "${COINSFILE}" + + DES=$(cat ${DESTFILE}) + [[ ${DES} != "" && ${DES} != "null" ]] \ + && echo "$DES + $WHAT" | bc > ${DESTFILE} \ + || echo "${WHAT}" > ${DESTFILE} + cat ${DESTFILE} + + ## VERIFY AND INFORM OR CONFIRM PAYMENT + + echo "

OPERATION

${G1PUB}
$CUR - ${WHAT}

${VAL}
$DES + ${WHAT}

OK

" >> ~/.zen/tmp/${MOATS}/disco - CUR=$(cat "${COINSFILE}") - if [[ ! -z "$CUR" && "$CUR" != "null" ]]; then - RESULT=$(echo "$CUR - $WHAT" | bc) - echo "$RESULT" > "${COINSFILE}" else - echo "-${WHAT}" > "${COINSFILE}" + + ## INFORM SYSTEM MUST RENEW OPERATION + echo "NOK" > $HOME/.zen/game/pending/${G1PUB}/${MOATS}_${VAL}+${WHAT}.TX + echo "

BLOCKCHAIN CONNEXION ERROR

- PLEASE RETRY -

\ + if the problem persists, please contact support@qo-op.com" >> ~/.zen/tmp/${MOATS}/disco + fi - cat "${COINSFILE}" - DES=$(cat ${DESTFILE}) - [[ ${DES} != "" && ${DES} != "null" ]] \ - && echo "$DES + $WHAT" | bc > ${DESTFILE} \ - || echo "${WHAT}" > ${DESTFILE} - cat ${DESTFILE} - - ## VERIFY AND INFORM OR CONFIRM PAYMENT - - echo "

OPERATION

${G1PUB}
$CUR - ${WHAT}

${VAL}
$DES + ${WHAT}

OK

" >> ~/.zen/tmp/${MOATS}/disco else - echo "NOK" > $HOME/.zen/game/pending/${G1PUB}/${MOATS}_${VAL}+${WHAT}.TX - + # ONE PLAY A DAY + echo "ALREADY PLAYED TODAY" >> ~/.zen/tmp/${MOATS}/disco fi + #################################### TODO : MONITOR DUNITER TX OK + + else + echo "

${WHAT} FORMAT ERROR

" >> ~/.zen/tmp/${MOATS}/disco + fi else - echo "

${WHAT} ${VAL} ${CURCOINS} PROBLEM

" >> ~/.zen/tmp/${MOATS}/disco + echo "

${WHAT} ${VAL} ${CURCOINS} GLOBAL ERROR

" >> ~/.zen/tmp/${MOATS}/disco + fi + else + + echo "

DISCO DECODE ERROR

" >> ~/.zen/tmp/${MOATS}/disco + cat ~/.zen/tmp/${MOATS}/disco.aes >> ~/.zen/tmp/${MOATS}/disco + fi if [[ ${APPNAME} == "flipper" ]]; then - ## Open OSM2IPF getreceiver App + ## Open OSM2IPF "getreceiver" App - LINK="${myIPFS}${GETRECEIVERCID}/?qrcode=${QRCODE}&pass=${PASS}&coins=${CURCOINS}" + BASE="qrcode=$(urlencode "${QRCODE}")&pass=${PASS}" + LINK="${myIPFS}${GETRECEIVERCID}/?${BASE}&coins=${CURCOINS}" echo "LINK:$LINK" echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/disco echo "" >> ~/.zen/tmp/${MOATS}/disco diff --git a/_12345.sh b/_12345.sh index b564ebd0..b2fac732 100755 --- a/_12345.sh +++ b/_12345.sh @@ -95,6 +95,9 @@ while true; do [[ ${ipfsnodeid} == "null" || ${ipfsnodeid} == "" ]] && echo "BAD ${IPFSNODEID} - CONTINUE" && continue + ## SWARM CONNECT + ipfs swarm connect ${bootnode} + ## PREPARE TO REFRESH SWARM LOCAL CACHE mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid} mkdir -p ~/.zen/tmp/swarm/_${ipfsnodeid} diff --git a/tools/make_image_ipfs_index_carousel.sh b/tools/make_image_ipfs_index_carousel.sh index 1b0be72a..84efb827 100755 --- a/tools/make_image_ipfs_index_carousel.sh +++ b/tools/make_image_ipfs_index_carousel.sh @@ -93,9 +93,12 @@ if [[ ! -d $img_dir ]]; then # ADD IT composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/QR.png ~/.zen/tmp/carousel/${pub}.one.png ~/.zen/tmp/one.png + # CONVERT COINS to ZEN + ZEN=$(echo "$COINS * 10" | bc) + ## WRITE ON IT : ASK FOR REFILL convert -font 'Liberation-Sans' \ - -pointsize 80 -fill purple -draw 'text 50,120 "'"$COINS(_) ZEN"'"' \ + -pointsize 80 -fill purple -draw 'text 50,120 "'"$ZEN ZEN"'"' \ -pointsize 30 -fill purple -draw 'text 40, 180 "'"$PLAYER"'"' \ -pointsize 14 -fill white -draw 'text 40, 200 "'"${birthdate}"'"' \ "${HOME}/.zen/tmp/one.png" "${HOME}/.zen/tmp/carousel/${pub}.png" \ diff --git a/tools/my.sh b/tools/my.sh index d132d0b8..082f085a 100755 --- a/tools/my.sh +++ b/tools/my.sh @@ -472,4 +472,4 @@ fi ASTROJSCID="/ipfs/" LOGINCID="/ipfs/" -GETRECEIVERCID="/ipfs/QmVCAET43hP37XsSsRmj8P3hEJMXpgcdCAxeQhAyDCKpuE" +GETRECEIVERCID="/ipfs/QmXctju7CKDEwpesQSvSyfxfVdZqhdMdfMx3MikB6u7mLd"