#!/bin/bash ################################################################################ # Author: Fred (support@qo-op.com) # Version: 1.0 # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) ################################################################################ MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized ME="${0##*/}" ################################################################################ # Create different king of G1BILLET(s) with $MONTANT DU or TW IPNS # ${MY_PATH}/G1BILLETS.sh 5 986397643 ticket # MONTANT # UNIQID # STYLE # ################################################################################ MONTANT="$1" [[ $MONTANT == "0" ]] && MONTANT="" ### COMMAND MODE ### if [[ $MONTANT != "daemon" ]]; then [[ $MONTANT == "" ]] && MONTANT="___" UNIQID="$2" [[ $UNIQID == "0" ]] && UNIQID="" [[ $UNIQID == "" ]] && UNIQID=$(${MY_PATH}/diceware.sh 1 | xargs)${RANDOM:0:2}$(${MY_PATH}/diceware.sh 1 | xargs) STYLE="$3" ## CHECK STYLE IS EMAIL if [[ "${STYLE}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then # echo "PLAYER : $STYLE" EMAIL=${STYLE} STYLE="astro" fi ## PLANCHE PDF DE 6 BILLETS PAR DEFAUT NBbillets=6 [[ "${STYLE}" == "ticket" || "${STYLE}" == "xbian" || "${STYLE}" == "astro" ]] && NBbillets=1 # CHECK IF $STYLE IMAGES EXIST [[ ! -f ${MY_PATH}/images/fond${STYLE}.jpg ]] && echo "missing fond${STYLE}.jpg" && exit 1 [[ ! -f ${MY_PATH}/images/g1${STYLE}.png ]] && echo "missing g1${STYLE}.jpg" && exit 1 [[ ! -f ${MY_PATH}/images/logo${STYLE}.png ]] && echo "missing logo${STYLE}.jpg" && exit 1 # CREATION DE $NBbillets BILLETS DE $MONTANT DU boucle=0; while [ $boucle -lt $NBbillets ] do boucle=$((boucle+1)) mkdir -p "${MY_PATH}/tmp/g1billet/${UNIQID}" NUMBER=$(${MY_PATH}/diceware.sh 4 | xargs) UN=$(echo ${NUMBER} | jq -Rr @uri) SECRET=$(${MY_PATH}/diceware.sh 4 | xargs) DE=$(echo ${SECRET} | jq -Rr @uri) # CREATION CLEF BILLET BILLETPUBKEY=$(python3 ${MY_PATH}/key_create_dunikey.py "$NUMBER" "$SECRET") rm -f /tmp/secret.dunikey ## ASTRO : FIND TW ADDRESS + EMAIL = CREATE PLAYER on 1234 API [[ "$STYLE" == "astro" ]] \ && ${MY_PATH}/keygen -t ipfs -o ${MY_PATH}/tmp/g1billet.${UNIQID}.ipns.key "$NUMBER" "$SECRET" \ && ASTRONAUTENS=$(ipfs key import ${UNIQID} -f pem-pkcs8-cleartext ${MY_PATH}/tmp/g1billet.${UNIQID}.ipns.key) \ && rm -f ${MY_PATH}/tmp/g1billet.${UNIQID}.ipns.key \ && ipfs key rm ${UNIQID} && echo "/ipns/$ASTRONAUTENS" \ && [[ ${EMAIL} ]] && echo 'curl -s "https://astroport.copylaradio.com/?salt='$UN'&pepper='$DE'&g1pub=on&email='$EMAIL'"' # CREATION FICHIER IMAGE BILLET dans ${MY_PATH}/tmp/g1billet/${UNIQID} $(${MY_PATH}/MAKE_G1BILLET.sh "${NUMBER}" "${SECRET}" "${MONTANT}" "${BILLETPUBKEY}" "${UNIQID}" "${STYLE}" "${ASTRONAUTENS}" "${EMAIL}") done if [[ "${STYLE}" == "ticket" || "${STYLE}" == "xbian" || "${STYLE}" == "astro" ]] then # ONE FILE ONLY cp ${MY_PATH}/tmp/g1billet/${UNIQID}/*.jpg ${MY_PATH}/tmp/g1billet/${UNIQID}.jpg # CLEANING TEMP FILES rm -Rf ${MY_PATH}/tmp/g1billet/${UNIQID} # ALLOWS ANY USER TO DELETE chmod 777 ${MY_PATH}/tmp/g1billet/${UNIQID}.jpg export ZFILE="${MY_PATH}/tmp/g1billet/${UNIQID}.jpg" else # MONTAGE DES IMAGES DES BILLETS VERS ${MY_PATH}/tmp/g1billet/${UNIQID}.pdf montage ${MY_PATH}/tmp/g1billet/${UNIQID}/*.jpg -tile 2x3 -geometry 964x459 ${MY_PATH}/tmp/g1billet/${UNIQID}.pdf # NB!! if "not autorized" then edit /etc/ImageMagick-6/policy.xml and comment # # CLEANING TEMP FILES rm -Rf ${MY_PATH}/tmp/g1billet/${UNIQID} # ALLOWS ANY USER TO DELETE chmod 777 ${MY_PATH}/tmp/g1billet/${UNIQID}.pdf export ZFILE="${MY_PATH}/tmp/g1billet/${UNIQID}.pdf" fi ### LAST LINE INFORM DAEMON echo "$ZFILE" else ################################################################################ ## MAKE IT A NETWORK MICRO SERVICE -- PORTS : INPUT=33101 OUTPUT=33102 ############## DEAMON MODE ### ##################################################################### myIP=$(hostname -I | awk '{print $1}' | head -n 1) isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") [[ $isLAN ]] && HNAME="http://g1billet.localhost" || HNAME="http://$(hostname)" HTTPWELLCOME='HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET Server: Astroport Content-Type: text/html; charset=UTF-8 [Astroport] G1BILLET MICRO SERVICE - 33101 - 33102 -

(♥‿‿♥).

' function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } while true; do echo "==================================================" echo "$ME DAEMON RUNNING $HNAME:33101" echo "TW : $HNAME:33101/?m=0&u=0&type=astro${RANDOM}@yopmail.com" REQ=$(echo "$HTTPWELLCOME" | nc -l -p 33101 -q 1) ## # WAIT FOR 33101 PORT CONTACT URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2) ### CONTACT URL #### HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2) HOST=$(echo "$HOSTP" | cut -d ':' -f 1) echo "==================================================" echo "$HOSTP" echo "==================================================" echo "GET RECEPTION : $URL" arr=(${URL//[=&]/ }) # PARAM (x 3) EXTRACT "¶m=value" ONE=$(urldecode ${arr[0]} | xargs); TWO=$(urldecode ${arr[2]} | xargs); THREE=$(urldecode ${arr[4]} | xargs); MONTANT=$(urldecode ${arr[1]} | xargs); UNIQID=$(urldecode ${arr[3]} | xargs); STYLE=$(urldecode ${arr[5]} | xargs); echo "DECODED : $ONE=$MONTANT & $TWO=$UNIQID & $THREE=$STYLE" echo ${MY_PATH}/${ME} '"'$MONTANT'"' '"'$UNIQID'"' '"'$STYLE'"' # EXECUTE COMMAND LOG=$(${MY_PATH}/${ME} "$MONTANT" "$UNIQID" "$STYLE") IPNS=$(echo "$LOG" | grep '/ipns/') echo "IPNS : $IPNS" CURL=$(echo "$LOG" | grep -w curl) echo "CURL : $CURL" ZFILE=$(echo "$LOG" | tail -n 1) # FIND JPG or PDF FILE_NAME="$(basename "${ZFILE}")" EXT="${FILE_NAME##*.}" BSIZE=$(du -b "${ZFILE}" | awk '{print $1}' | tail -n 1) # SEND BACK TO HTTP 33102 echo 'HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET Server: Astroport.G1BILLET Cache-Control: public Content-Transfer-Encoding: Binary Content-Length:'${BSIZE}' Content-Disposition: attachment; filename='${FILE_NAME}' ' > ${MY_PATH}/tmp/http.33102 cat ${ZFILE} >> ${MY_PATH}/tmp/http.33102 echo "GET IT : http://g1billet.localhost:33102" cat ${MY_PATH}/tmp/http.33102 | nc -l -p 33102 -q 1 > /dev/null 2>&1 echo "SERVED" rm -f "${ZFILE}" rm -f "${MY_PATH}/tmp/http.33102" done fi exit 0