2022-10-04 23:10:31 +02:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
################################################################################
2022-10-22 13:01:46 +02:00
## ASTROPORT API SERVER http://$myIP:1234
2022-10-30 19:32:56 +01:00
## ATOMIC GET REDIRECT TO ONE SHOT WEB SERVICE THROUGH PORTS
## ASYNCHRONOUS IPFS API
2022-10-22 13:01:46 +02:00
################################################################################
2022-10-04 23:10:31 +02:00
MY_PATH = " `dirname \" $0 \"` " # relative
MY_PATH = " `( cd \" $MY_PATH \" && pwd )` " # absolutized and normalized
ME = " ${ 0 ##*/ } "
MOATS = $( date -u +"%Y%m%d%H%M%S%4N" )
IPFSNODEID = $( cat ~/.ipfs/config | jq -r .Identity.PeerID)
2022-10-22 12:20:29 +02:00
myIP = $( hostname -I | awk '{print $1}' | head -n 1)
[ [ ! $myIP ] ] && myIP = "127.0.1.1"
PORT = 12345
2022-10-04 23:10:31 +02:00
2022-10-30 19:32:56 +01:00
YOU = $( ps auxf --sort= +utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) ; ## $USER running ipfs
LIBRA = $( head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
2022-10-27 15:48:35 +02:00
2022-10-31 02:52:43 +01:00
mkdir -p ~/.zen/tmp/coucou/
2022-10-22 17:08:20 +02:00
2022-10-04 23:10:31 +02:00
## CHECK FOR ANY ALREADY RUNNING nc
2022-10-07 02:16:53 +02:00
ncrunning = $( ps auxf --sort= +utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
2022-10-30 18:36:16 +01:00
[ [ $ncrunning ] ] && echo " ERROR - API Server Already Running - http:// $myIP :1234/?salt=totodu56&pepper=totodu56 " && exit 1
2022-10-30 19:32:56 +01:00
## NOT RUNNING TWICE
2022-10-27 16:28:44 +02:00
echo "_________________________________________________________"
2022-10-30 15:44:49 +01:00
echo "LAUNCHING Astroport API Server - TEST - "
echo
2022-10-30 18:36:16 +01:00
echo " CREATE GCHANGE + TW http:// $myIP :1234/?salt=totodu56&pepper=totodu56&g1pub=on&email=fred@astroport.com "
2022-10-30 15:44:49 +01:00
echo
2022-10-30 18:36:16 +01:00
echo " OPEN TW R/W http:// $myIP :1234/?salt=totodu56&pepper=totodu56&official "
2022-10-30 15:44:49 +01:00
echo
2022-10-30 18:36:16 +01:00
echo " GCHANGE MESSAGING http:// $myIP :1234/?salt=totodu56&pepper=totodu56&messaging "
echo " GCHANGE PLAYER URL http:// $myIP :1234/?salt=totodu56&pepper=totodu56&g1pub "
echo
echo " TESTCRAFT http:// $myIP :1234/?salt=totodu56&pepper=totodu56&testcraft=on&nodeid=12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j&dataid=QmZgfoCtJ1KwoBNUQepM1xhdmdU4x34ZxpLMtLqY43jvXV/g1wishtiddlers.json "
2022-10-27 16:28:44 +02:00
echo "_________________________________________________________"
2022-10-04 23:10:31 +02:00
function urldecode( ) { : " ${ *//+/ } " ; echo -e " ${ _ //%/ \\ x } " ; }
while true; do
2022-10-30 19:44:25 +01:00
start = ` date +%s`
2022-10-21 20:11:47 +02:00
MOATS = $( date -u +"%Y%m%d%H%M%S%4N" )
2022-10-21 22:09:13 +02:00
## CHANGE NEXT PORT (HERE YOU CREATE A SOCKET QUEUE)
2022-10-30 19:32:56 +01:00
[ ${ PORT } -lt 12345 ] && PORT = $(( PORT+${ RANDOM : 0 : 3 } )) || PORT = $(( PORT-${ RANDOM : 0 : 3 } ))
2022-10-22 12:20:29 +02:00
## RANDOM PORT SWAPPINESS
2022-10-21 22:09:13 +02:00
2022-10-30 19:32:56 +01:00
###############
### CREATE IPNS KEY - ACTIVATE WHITH ENOUGH BOOTSTRAP
2022-10-30 19:52:17 +01:00
### echo
### ipfs key rm ${PORT} > /dev/null 2>&1
### SESSIONNS=$(ipfs key gen ${PORT})
### echo "IPNS SESSION http://$myIP:8080/ipns/$SESSIONNS CREATED"
### MIAM=$(echo ${PORT} | ipfs add -q)
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$MIAM
### end=`date +%s`
### echo ${PORT} initialisation time was `expr $end - $start` seconds.
### echo
2022-10-30 16:07:26 +01:00
###############
2022-10-30 19:32:56 +01:00
###############
2022-10-30 16:07:26 +01:00
2022-10-30 19:32:56 +01:00
# RESET VARIABLES
2022-10-27 14:13:02 +02:00
SALT = "" ; PEPPER = "" ; TYPE = ""
2022-10-21 20:22:28 +02:00
echo "************************************************************************* "
2022-10-22 13:01:46 +02:00
echo " ASTROPORT API SERVER UP.......................... http:// $myIP :1234 PORT "
2022-10-30 19:32:56 +01:00
echo " $MOATS LANDING PAGE http:// $myIP : ${ PORT } "
2022-10-21 18:18:16 +02:00
2022-10-30 19:32:56 +01:00
############### ############### ############### ############### templates/index.http
# REPLACE myIP in http response template (fixing next API meeting point)
2022-10-31 02:52:43 +01:00
sed " s~127.0.0.1:12345~ $myIP : ${ PORT } ~g " $HOME /.zen/Astroport.ONE/templates/index.http > ~/.zen/tmp/coucou/${ MOATS } .myIP.http
sed -i " s~127.0.0.1~ $myIP ~g " ~/.zen/tmp/coucou/${ MOATS } .myIP.http
sed -i " s~:12345~: ${ PORT } ~g " ~/.zen/tmp/coucou/${ MOATS } .myIP.http
sed -i " s~_IPFSNODEID_~ ${ IPFSNODEID } ~g " ~/.zen/tmp/coucou/${ MOATS } .myIP.http ## NODE PUBLISH HOSTED WHAT'S JSON
sed -i " s~_HOSTNAME_~ $( hostname) ~g " ~/.zen/tmp/coucou/${ MOATS } .myIP.http ## HOSTNAME
2022-10-30 19:32:56 +01:00
############### ############### ############### ###############
2022-10-24 02:45:49 +02:00
############################################################################
2022-10-31 02:52:43 +01:00
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/coucou/${MOATS}.myIP.http on PORT 1234 (LOOP BLOCKING POINT)
2022-10-24 02:45:49 +02:00
############################################################################
2022-10-31 02:52:43 +01:00
URL = $( cat $HOME /.zen/tmp/coucou/${ MOATS } .myIP.http | nc -l -p 1234 -q 1 | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
2022-10-22 13:01:46 +02:00
############################################################################
2022-10-31 02:52:43 +01:00
echo "URL" > ~/.zen/tmp/coucou/${ MOATS } .url ## LOGGING URL
2022-10-24 02:45:49 +02:00
############################################################################
2022-10-21 20:11:47 +02:00
start = ` date +%s`
2022-10-26 18:38:37 +02:00
############################################################################
2022-10-30 19:32:56 +01:00
## / CONTACT - PUBLISH HTML HOMEPAGE (ADD HTTP HEADER)
2022-10-21 21:50:40 +02:00
if [ [ $URL = = "/" ] ] ; then
2022-10-30 19:32:56 +01:00
echo " / CONTACT : http:// $myIP :1234 "
2022-10-30 03:02:59 +01:00
echo "___________________________ Preparing register.html"
2022-10-21 22:05:26 +02:00
echo " HTTP/1.1 200 OK
2022-10-21 22:00:29 +02:00
Server: Astroport
Content-Type: text/html; charset = UTF-8
2022-10-31 02:52:43 +01:00
" > ~/.zen/tmp/coucou/ ${ MOATS } .index.redirect ## HTTP 1.1 HEADER + HTML BODY
sed " s~127.0.0.1~ $myIP ~g " $HOME /.zen/Astroport.ONE/templates/register.html >> ~/.zen/tmp/coucou/${ MOATS } .index.redirect
sed -i " s~_IPFSNODEID_~ ${ IPFSNODEID } ~g " ~/.zen/tmp/coucou/${ MOATS } .index.redirect
sed -i " s~_HOSTNAME_~ $( hostname) ~g " ~/.zen/tmp/coucou/${ MOATS } .index.redirect
2022-10-21 22:00:29 +02:00
2022-10-31 02:52:43 +01:00
cat ~/.zen/tmp/coucou/${ MOATS } .index.redirect | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
2022-10-22 13:01:46 +02:00
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
2022-10-21 22:00:29 +02:00
continue
2022-10-21 21:50:40 +02:00
fi
2022-10-26 18:38:37 +02:00
############################################################################
############################################################################
2022-10-30 19:32:56 +01:00
############################################################################
2022-10-04 23:10:31 +02:00
echo "=================================================="
echo " GET RECEPTION : $URL "
arr = ( ${ URL //[=&]/ } )
2022-10-27 16:28:44 +02:00
# CHECK TYPE
2022-10-27 13:27:17 +02:00
TYPE = $( urldecode ${ arr [4] } )
2022-10-27 15:48:35 +02:00
WHAT = $( urldecode ${ arr [5] } )
2022-10-04 23:10:31 +02:00
2022-10-27 18:01:04 +02:00
[ [ ${ arr [0] } = = "" || ${ arr [1] } = = "" ] ] && ( echo "ERROR - MISSING DATA" | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-07 03:25:10 +02:00
2022-10-30 19:32:56 +01:00
########## CHECK GET PARAM NAMES
2022-10-21 13:45:53 +02:00
###################################################################################################
###################################################################################################
2022-10-22 17:08:20 +02:00
# API ZERO ## Made In Zion & La Bureautique
2022-10-21 13:45:53 +02:00
if [ [ ${ arr [0] } = = "salt" ] ] ; then
2022-10-30 19:32:56 +01:00
################### KEY GEN ###################################
2022-10-27 18:01:04 +02:00
echo " >>>>>>>>>>>>>> Application LaBureautique >><< TYPE = $TYPE <<<<<<<<<<<<<<<<<<<< "
2022-10-30 19:32:56 +01:00
2022-10-26 17:53:37 +02:00
SALT = $( urldecode ${ arr [1] } | xargs) ;
2022-10-27 18:01:04 +02:00
[ [ ! $SALT ] ] && ( echo "ERROR - SALT MISSING" | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-26 17:53:37 +02:00
PEPPER = $( urldecode ${ arr [3] } | xargs)
2022-10-27 18:01:04 +02:00
[ [ ! $PEPPER ] ] && ( echo "ERROR - PEPPER MISSING" | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-22 17:08:20 +02:00
2022-10-26 17:53:37 +02:00
TYPE = $( urldecode ${ arr [4] } | xargs)
2022-10-27 15:48:35 +02:00
WHAT = $( urldecode ${ arr [5] } | xargs)
2022-10-21 13:45:53 +02:00
2022-10-30 19:32:56 +01:00
## SAVE "salt" "pepper" DEBUG REMOVE OR PASS ENCRYPT FOR SECURITY REASON
echo " PLAYER CREDENTIALS : \" $SALT \" \" $PEPPER \" "
2022-10-31 02:52:43 +01:00
echo " \" $SALT \" \" $PEPPER \" " > ~/.zen/tmp/coucou/${ MOATS } .secret.june
2022-10-22 15:47:54 +02:00
2022-10-30 19:32:56 +01:00
# CALCULATING ${MOATS}.secret.key + G1PUB
2022-10-31 02:52:43 +01:00
${ MY_PATH } /tools/keygen -t duniter -o ~/.zen/tmp/coucou/${ MOATS } .secret.key " $SALT " " $PEPPER "
G1PUB = $( cat ~/.zen/tmp/coucou/${ MOATS } .secret.key | grep 'pub:' | cut -d ' ' -f 2)
2022-10-30 19:32:56 +01:00
[ [ ! ${ G1PUB } ] ] && ( echo "ERROR - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
echo " G1PUB : ${ G1PUB } "
2022-10-21 13:45:53 +02:00
## CALCULATING IPNS ADDRESS
2022-10-30 19:32:56 +01:00
ipfs key rm ${ G1PUB } > /dev/null 2>& 1
2022-10-31 02:52:43 +01:00
rm -f ~/.zen/tmp/coucou/${ MOATS } .${ G1PUB } .ipns.key
${ MY_PATH } /tools/keygen -t ipfs -o ~/.zen/tmp/coucou/${ MOATS } .${ G1PUB } .ipns.key " $SALT " " $PEPPER "
ASTRONAUTENS = $( ipfs key import ${ G1PUB } -f pem-pkcs8-cleartext ~/.zen/tmp/coucou/${ MOATS } .${ G1PUB } .ipns.key )
2022-10-28 13:13:20 +02:00
echo " ASTRONAUTE TW : http:// $myIP :8080/ipns/ ${ ASTRONAUTENS } "
2022-10-27 18:01:04 +02:00
echo
2022-10-30 19:32:56 +01:00
################### KEY GEN ###################################
2022-10-31 01:58:26 +01:00
2022-10-28 13:13:20 +02:00
########################################
## ARCHIVE TOCTOC WHATS & KEEPS LOGS CLEAN
2022-10-31 02:52:43 +01:00
mkdir -p ~/.zen/game/players/toctoc/
ISTHERE = $( ls -t ~/.zen/game/players/toctoc/*.${ G1PUB } .ipns.key 2>/dev/null | tail -n 1)
2022-10-22 18:42:58 +02:00
TTIME = $( echo $ISTHERE | rev | cut -d '.' -f 4 | cut -d '/' -f 1 | rev)
if [ [ ! $ISTHERE ] ] ; then
2022-10-27 15:48:35 +02:00
echo " WHAT 1ST TOCTOC : $MOATS "
2022-10-31 02:52:43 +01:00
cp ~/.zen/tmp/coucou/${ MOATS } .* ~/.zen/game/players/toctoc/
2022-10-27 18:01:04 +02:00
else ## KEEP 1ST CONTACT ONLY
2022-10-31 02:52:43 +01:00
OLDONE = $( ls -t ~/.zen/tmp/coucou/*.${ G1PUB } .ipns.key | tail -n 1)
2022-10-22 18:42:58 +02:00
DTIME = $( echo $OLDONE | rev | cut -d '.' -f 4 | cut -d '/' -f 1 | rev)
2022-10-31 02:52:43 +01:00
[ [ $DTIME != $MOATS ] ] && rm ~/.zen/tmp/coucou/$DTIME .*
2022-10-22 18:42:58 +02:00
fi
2022-10-27 18:01:04 +02:00
## TYPE SLECTION ########################
2022-10-25 14:33:15 +02:00
# MESSAGING
2022-10-21 20:20:09 +02:00
if [ [ $TYPE = = "messaging" ] ] ; then
2022-10-21 20:11:47 +02:00
2022-10-30 19:32:56 +01:00
echo " Extracting ${ G1PUB } messages... "
2022-10-26 20:38:01 +02:00
~/.zen/Astroport.ONE/tools/timeout.sh -t 3 \
2022-10-31 02:52:43 +01:00
${ MY_PATH } /tools/jaklis/jaklis.py -k ~/.zen/tmp/coucou/${ MOATS } .secret.key read -n 10 -j > ~/.zen/tmp/coucou/messin.${ G1PUB } .json
[ [ ! -s ~/.zen/tmp/coucou/messin.${ G1PUB } .json || $( grep -v -E 'Aucun message à afficher' ~/.zen/tmp/coucou/messin.${ G1PUB } .json) = = "True" ] ] && echo "[]" > ~/.zen/tmp/coucou/messin.${ G1PUB } .json
2022-10-26 20:38:01 +02:00
~/.zen/Astroport.ONE/tools/timeout.sh -t 3 \
2022-10-31 02:52:43 +01:00
${ MY_PATH } /tools/jaklis/jaklis.py -k ~/.zen/tmp/coucou/${ MOATS } .secret.key read -n 10 -j -o > ~/.zen/tmp/coucou/messout.${ G1PUB } .json
[ [ ! -s ~/.zen/tmp/coucou/messout.${ G1PUB } .json || $( grep -v -E 'Aucun message à afficher' ~/.zen/tmp/coucou/messout.${ G1PUB } .json) = = "True" ] ] && echo "[]" > ~/.zen/tmp/coucou/messout.${ G1PUB } .json
2022-10-22 17:08:20 +02:00
2022-10-31 02:52:43 +01:00
echo " Creating messages In/Out JSON ~/.zen/tmp/coucou/ ${ MOATS } .messaging.json "
echo '[' > ~/.zen/tmp/coucou/${ MOATS } .messaging.json
cat ~/.zen/tmp/coucou/messin.${ G1PUB } .json >> ~/.zen/tmp/coucou/${ MOATS } .messaging.json
echo "," >> ~/.zen/tmp/coucou/${ MOATS } .messaging.json
cat ~/.zen/tmp/coucou/messout.${ G1PUB } .json >> ~/.zen/tmp/coucou/${ MOATS } .messaging.json
echo ']' >> ~/.zen/tmp/coucou/${ MOATS } .messaging.json
2022-10-21 20:11:47 +02:00
2022-10-25 14:50:15 +02:00
## ADDING HTTP/1.1 PROTOCOL HEADER
2022-10-21 22:05:26 +02:00
echo " HTTP/1.1 200 OK
2022-10-21 20:11:47 +02:00
Server: Astroport
Content-Type: text/html; charset = UTF-8
2022-10-31 02:52:43 +01:00
" > ~/.zen/tmp/coucou/ ${ MOATS } .index.redirect
cat ~/.zen/tmp/coucou/${ MOATS } .messaging.json >> ~/.zen/tmp/coucou/${ MOATS } .index.redirect
2022-10-21 20:11:47 +02:00
2022-10-31 02:52:43 +01:00
### REPONSE=$(cat ~/.zen/tmp/coucou/${MOATS}.messaging.json | ipfs add -q)
2022-10-30 19:52:17 +01:00
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
### echo "SESSION http://$myIP:8080/ipns/$SESSIONNS "
2022-10-30 16:07:26 +01:00
2022-10-31 02:52:43 +01:00
cat ~/.zen/tmp/coucou/${ MOATS } .index.redirect | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
2022-10-30 03:02:59 +01:00
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
continue
2022-10-21 20:11:47 +02:00
fi
2022-10-27 18:01:04 +02:00
######################## MESSAGING END
2022-10-25 14:50:15 +02:00
2022-10-27 18:01:04 +02:00
########################################
# G1PUB -> Open Gchange Profile
########################################
if [ [ " $TYPE " = = "g1pub" && ${ arr [7] } = = "" ] ] ; then
2022-10-28 13:13:20 +02:00
## NO EMAIL = REDIRECT TO GCHANGE PROFILE
2022-10-31 02:52:43 +01:00
sed " s~_TWLINK_~https://www.gchange.fr/#/app/user/ ${ G1PUB } /~g " ~/.zen/Astroport.ONE/templates/index.redirect > ~/.zen/tmp/coucou/${ MOATS } .index.redirect
2022-10-30 16:07:26 +01:00
2022-10-30 19:52:17 +01:00
### REPONSE=$(echo https://www.gchange.fr/#/app/user/${G1PUB}/ | ipfs add -q)
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
### echo "SESSION http://$myIP:8080/ipns/$SESSIONNS "
2022-10-30 16:07:26 +01:00
2022-10-31 02:52:43 +01:00
cat ~/.zen/tmp/coucou/${ MOATS } .index.redirect | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
2022-10-30 03:02:59 +01:00
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
continue
2022-10-27 18:01:04 +02:00
fi
2022-10-27 16:13:15 +02:00
########################################
2022-10-30 17:40:51 +01:00
########################################
########################################
2022-10-27 16:13:15 +02:00
#TESTCRAFT=ON nodeid dataid
2022-10-30 17:40:51 +01:00
########################################
2022-10-27 16:13:15 +02:00
########################################
2022-10-27 13:27:17 +02:00
if [ [ " $TYPE " = = "testcraft" ] ] ; then
2022-10-28 13:13:20 +02:00
## RECORD DATA MADE IN BROWSER (JSON)
2022-10-27 13:27:17 +02:00
SALT = $( urldecode ${ arr [1] } | xargs)
PEPPER = $( urldecode ${ arr [3] } | xargs)
NODEID = $( urldecode ${ arr [7] } | xargs)
DATAID = $( urldecode ${ arr [9] } | xargs)
2022-10-27 16:13:15 +02:00
## COULD BE A RAW FILE, AN HTML, A JSON
2022-10-30 20:04:32 +01:00
echo " $TYPE IS $WHAT "
2022-10-28 15:32:44 +02:00
2022-10-30 20:04:32 +01:00
mkdir -p ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS }
echo " TRYING ipfs --timeout 2s cat /ipfs/ $DATAID > ~/.zen/tmp/ ${ IPFSNODEID } / ${ TYPE } / ${ NODEID } / ${ MOATS } /data.json "
ipfs --timeout 2s cat /ipfs/$DATAID > ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json
2022-10-30 18:27:08 +01:00
if [ [ ! -s ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json ] ] ; then
2022-10-30 20:04:32 +01:00
echo " >>> curl -m 12 -so ~/.zen/tmp/ ${ IPFSNODEID } / ${ TYPE } / ${ NODEID } / ${ MOATS } /data.json https://gateway.ipfs.io/ipfs/ $DATAID "
curl -m 12 -so ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json " https://gateway.ipfs.io/ipfs/ $DATAID "
fi
if [ [ ! -s ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json ] ] ; then
echo " ERROR - $DATAID TIMEOUT - TRY AGAIN " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
2022-10-30 18:29:47 +01:00
else
[ [ $( ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json | jq) ] ] && \
ipfs add ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json
2022-10-30 18:33:35 +01:00
fi
2022-10-30 20:04:32 +01:00
## REPONSE ON PORT
cat ~/.zen/tmp/${ IPFSNODEID } /${ TYPE } /${ NODEID } /${ MOATS } /data.json | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
2022-10-30 03:02:59 +01:00
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
continue
2022-10-27 13:27:17 +02:00
fi
2022-10-28 13:13:20 +02:00
##############################################
# DEFAULT (NO REDIRECT DONE YET) CHECK OFFICIAL GATEWAY
##############################################
2022-10-30 18:27:08 +01:00
TWIP = $myIP
# OFFICIAL Gateway ( increase waiting time ) - MORE SECURE
if [ [ $TYPE = = "official" ] ] ; then
echo " OFFICIAL latest online TW... $LIBRA ( $YOU ) "
2022-10-31 02:52:43 +01:00
[ [ $YOU ] ] && echo " http:// $myIP :8080/ipns/ ${ ASTRONAUTENS } ( $YOU ) " && ipfs --timeout 12s cat /ipns/${ ASTRONAUTENS } > ~/.zen/tmp/coucou/${ MOATS } .astroindex.html
[ [ ! -s ~/.zen/tmp/coucou/${ MOATS } .astroindex.html ] ] && echo " $LIBRA /ipns/ ${ ASTRONAUTENS } " && curl -m 12 -so ~/.zen/tmp/coucou/${ MOATS } .astroindex.html " $LIBRA /ipns/ ${ ASTRONAUTENS } "
2022-10-30 18:27:08 +01:00
# DEBUG
2022-10-31 02:52:43 +01:00
# echo "tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'"
2022-10-30 18:27:08 +01:00
# echo "cat ~/.zen/tmp/miz.json | jq -r .[].secret"
2022-10-31 02:52:43 +01:00
if [ [ -s ~/.zen/tmp/coucou/${ MOATS } .astroindex.html ] ] ; then
tiddlywiki --load ~/.zen/tmp/coucou/${ MOATS } .astroindex.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
2022-10-30 18:27:08 +01:00
OLDIP = $( cat ~/.zen/tmp/miz.json | jq -r .[ ] .secret)
[ [ ! $OLDIP ] ] && ( echo "501 ERROR - SORRY - YOUR TW IS OUT OF SWARM#0 - CONTINUE " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-30 19:39:30 +01:00
# LOCKED TW BECOMING ACTIVE GATEWAY
2022-10-30 18:27:08 +01:00
if [ [ $OLDIP = = "_SECRET_" ] ] ; then
2022-10-30 19:39:30 +01:00
echo "_SECRET_ TW PUSHING TW" ## BECOMING OFFICIAL BECOME R/W TW
2022-10-31 02:52:43 +01:00
sed -i " s~_SECRET_~ ${ myIP } ~g " ~/.zen/tmp/coucou/${ MOATS } .astroindex.html
2022-10-31 01:58:26 +01:00
2022-10-31 02:52:43 +01:00
# cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
2022-10-31 02:42:18 +01:00
# GET PLAYER FORM Dessin de $PLAYER
2022-10-31 02:52:43 +01:00
tiddlywiki --load ~/.zen/tmp/coucou/${ MOATS } .astroindex.html --output ~/.zen/tmp --render '.' 'MOA.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[moa]]'
2022-10-31 02:42:18 +01:00
PLAYER = $( cat ~/.zen/tmp/MOA.json | jq -r .[ ] .title | rev | cut -d ' ' -f 1 | rev)
[ [ ! $PLAYER ] ] && ( echo "ERROR - CANNOT FIND PLAYER IN TW - CONTINUE " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-31 02:15:06 +01:00
## CREATE $PLAYER IPNS KEY (for next 20h12)
2022-10-31 02:52:43 +01:00
ipfs key import ${ PLAYER } -f pem-pkcs8-cleartext ~/.zen/tmp/coucou/${ MOATS } .${ G1PUB } .ipns.key
2022-10-31 02:42:18 +01:00
[ [ ! -d ~/.zen/game/players/$PLAYER /ipfs/moa ] ] && mkdir -p ~/.zen/game/players/$PLAYER /ipfs/moa/
2022-10-31 02:52:43 +01:00
# cp ~/.zen/tmp/coucou/${MOATS}.astroindex.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
2022-10-31 02:15:06 +01:00
echo " ## PUBLISHING ${ PLAYER } /ipns/ $ASTRONAUTENS / "
2022-10-31 02:52:43 +01:00
IPUSH = $( ipfs add -Hq ~/.zen/tmp/coucou/${ MOATS } .astroindex.html | tail -n 1)
2022-10-31 02:42:18 +01:00
[ [ $IPUSH ] ] && ipfs name publish --key= ${ PLAYER } /ipfs/$IPUSH 2>/dev/null
2022-10-31 02:17:27 +01:00
## MEMORISE PLAYER Ŋ1 ZONE (TODO compare with VISA.new.sh)
2022-10-31 02:15:06 +01:00
echo " $PLAYER " > ~/.zen/game/players/$PLAYER /.player
echo " $G1PUB " > ~/.zen/game/players/$PLAYER /.g1pub
2022-10-26 20:38:01 +02:00
fi
2022-10-30 19:39:30 +01:00
# ACTIVE GATEWAY
2022-10-30 18:27:08 +01:00
[ [ $OLDIP != $myIP ] ] && TWIP = $OLDIP
echo " *********** OFFICIAL LOGIN GOES TO $TWIP "
2022-10-25 14:33:15 +02:00
else
2022-10-31 01:58:26 +01:00
( echo "ERROR - NO TW FOUND - ERROR" | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-25 14:33:15 +02:00
fi
2022-10-30 18:27:08 +01:00
else
2022-10-31 01:58:26 +01:00
echo "***** READER MODE *****"
2022-10-30 18:27:08 +01:00
fi
2022-10-26 20:38:01 +02:00
2022-10-31 02:52:43 +01:00
sed " s~_TWLINK_~http:// $TWIP :8080/ipns/ ${ ASTRONAUTENS } ~g " ~/.zen/Astroport.ONE/templates/index.redirect > ~/.zen/tmp/coucou/${ MOATS } .index.redirect
2022-10-25 03:18:37 +02:00
2022-10-21 20:11:47 +02:00
## RESPONDING
2022-10-31 02:52:43 +01:00
cat ~/.zen/tmp/coucou/${ MOATS } .index.redirect | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
echo " HTTP 1.1 PROTOCOL DOCUMENT READY ~/.zen/tmp/coucou/ ${ MOATS } .index.redirect "
2022-10-22 13:01:46 +02:00
echo " $MOATS -----> PAGE AVAILABLE -----> http:// $myIP : ${ PORT } "
2022-10-31 01:58:26 +01:00
2022-10-28 13:13:20 +02:00
#echo "${ASTRONAUTENS}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
2022-10-21 13:45:53 +02:00
2022-10-27 15:48:35 +02:00
## CHECK IF ALREADY EXISTING WHAT
2022-10-21 13:54:53 +02:00
# IF NOT = BATCH CREATE TW
2022-10-21 20:11:47 +02:00
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
2022-10-21 13:45:53 +02:00
2022-10-28 13:13:20 +02:00
fi ## END IF SALT
2022-10-21 13:45:53 +02:00
2022-10-27 13:27:17 +02:00
2022-10-21 13:45:53 +02:00
###################################################################################################
###################################################################################################
2022-10-26 18:38:37 +02:00
# API ONE : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email/elastic=ELASTICID&pseudo=PROFILENAME
2022-10-27 20:36:25 +02:00
if [ [ ( ${ arr [6] } = = "email" || ${ arr [6] } = = "elastic" ) && ${ arr [7] } != "" ] ] ; then
2022-10-27 13:27:17 +02:00
2022-10-30 15:44:49 +01:00
[ [ $TYPE != "g1pub" ] ] && ( echo " ERROR - BAD COMMAND $TYPE " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-26 18:38:37 +02:00
2022-10-24 02:45:49 +02:00
start = ` date +%s`
2022-10-22 13:01:46 +02:00
2022-10-26 18:26:50 +02:00
SALT = $( urldecode ${ arr [1] } | xargs)
PEPPER = $( urldecode ${ arr [3] } | xargs)
2022-10-27 15:48:35 +02:00
WHAT = $( urldecode ${ arr [7] } | xargs)
2022-10-26 18:26:50 +02:00
PSEUDO = $( urldecode ${ arr [9] } | xargs)
2022-10-24 02:45:49 +02:00
2022-10-30 15:44:49 +01:00
[ [ ! $WHAT ] ] && ( echo " ERROR - MISSING $WHAT FOR WHAT CONTACT " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-04 23:10:31 +02:00
2022-10-21 13:45:53 +02:00
if [ [ ! $PSEUDO ] ] ; then
2022-10-27 15:48:35 +02:00
PSEUDO = $( echo $WHAT | cut -d '@' -f 1)
2022-10-24 02:45:49 +02:00
PSEUDO = ${ PSEUDO ,, } ; PSEUDO = ${ PSEUDO %%[0-9]* } ${ RANDOM : 0 : 3 }
2022-10-21 13:45:53 +02:00
fi
2022-10-06 15:57:22 +02:00
# PASS CRYPTING KEY
PASS = $( echo " ${ RANDOM } ${ RANDOM } ${ RANDOM } ${ RANDOM } " | tail -c-7)
2022-10-04 23:10:31 +02:00
echo " $SALT "
echo " $PEPPER "
2022-10-27 15:48:35 +02:00
if [ [ ! -d ~/.zen/game/players/$WHAT ] ] ; then
2022-10-26 18:26:50 +02:00
# ASTRONAUT NEW VISA Create VISA.new.sh in background
2022-10-27 15:48:35 +02:00
$MY_PATH /tools/VISA.new.sh " $SALT " " $PEPPER " " $WHAT " " $PSEUDO " &
2022-10-28 13:13:20 +02:00
echo " OK - ASTRONAUT $PSEUDO VISA CREATION [ $SALT + $PEPPER ] ( $WHAT )
<br> PREPARING YOUR TW - PLEASE 'CHECK' http://$myIP :1234/ " | nc -l -p ${ PORT } -q 1 > /dev/null 2>&1 &
2022-10-26 18:26:50 +02:00
continue
2022-10-21 13:45:53 +02:00
else
2022-10-27 15:48:35 +02:00
# ASTRONAUT EXISTING WHAT
CHECK = $( cat ~/.zen/game/players/$WHAT /secret.june | grep -w " $SALT " )
[ [ $CHECK ] ] && CHECK = $( cat ~/.zen/game/players/$WHAT /secret.june | grep -w " $PEPPER " )
2022-10-27 18:01:04 +02:00
[ [ ! $CHECK ] ] && ( echo " ERROR - WHAT $WHAT ALREADY EXISTS " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-24 03:00:50 +02:00
fi
2022-10-22 13:01:46 +02:00
2022-10-26 18:26:50 +02:00
###################################################################################################
2022-10-06 15:57:22 +02:00
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
2022-10-04 23:10:31 +02:00
fi
2022-10-06 15:57:22 +02:00
###################################################################################################
###################################################################################################
2022-10-21 13:45:53 +02:00
# API TWO : ?qrcode=G1PUB
2022-10-04 23:10:31 +02:00
if [ [ ${ arr [0] } = = "qrcode" ] ] ; then
2022-10-27 15:48:35 +02:00
## Astroport.ONE local use QRCODE Contains WHAT G1PUB
2022-10-26 18:26:50 +02:00
QRCODE = $( echo $URL | cut -d ' ' -f2 | cut -d '=' -f 2 | cut -d '&' -f 1) && echo " QRCODE : $QRCODE "
2022-10-04 23:10:31 +02:00
g1pubpath = $( grep $QRCODE ~/.zen/game/players/*/.g1pub | cut -d ':' -f 1 2>/dev/null)
2022-10-27 15:48:35 +02:00
WHAT = $( echo " $g1pubpath " | rev | cut -d '/' -f 2 | rev 2>/dev/null)
2022-10-04 23:10:31 +02:00
## FORCE LOCAL USE ONLY. Remove to open 1234 API
2022-10-28 20:47:47 +02:00
[ [ ! -d ~/.zen/game/players/$WHAT || $WHAT = = "" ] ] && ( echo " ERROR - QRCODE - NO $WHAT ON BOARD !! " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-04 23:10:31 +02:00
2022-10-28 20:47:47 +02:00
## USE SECOND HTTP SERVER TO RECEIVE PASS
2022-10-04 23:10:31 +02:00
2022-10-27 18:01:04 +02:00
[ [ ${ arr [2] } = = "" ] ] && ( echo "ERROR - QRCODE - MISSING ACTION" | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-26 18:26:50 +02:00
## Demande de copie d'une URL reçue.
if [ [ ${ arr [2] } = = "url" ] ] ; then
wsource = " ${ arr [3] } "
[ [ ${ arr [4] } = = "type" ] ] && wtype = " ${ arr [5] } " || wtype = "Youtube"
2022-10-07 02:16:53 +02:00
2022-10-28 20:47:47 +02:00
## CREATION TIDDLER "G1Voeu" G1CopierYoutube
2022-10-30 02:29:45 +01:00
# /.zen/Astropor.ONE/ajouter_media.sh "$(urldecode $wsource)" "$wtype" "$QRCODE" &
2022-10-28 20:47:47 +02:00
echo "## Insertion tiddler : G1CopierYoutube"
echo ' [
{
"title" : " ' ${ MOATS } ' " ,
"type" : "'text/vnd.tiddlywiki'" ,
"text" : " ' $( urldecode $wsource ) ' " ,
"tags" : " 'CopierYoutube ${ WHAT } ' "
}
]
' > ~/.zen/tmp/${ WHAT } .${ MOATS } .import.json
## TODO ASTROBOT "G1AstroAPI" READS ~/.zen/tmp/${WHAT}.${MOATS}.import.json
( echo " OK - ~/.zen/tmp/ ${ WHAT } . ${ MOATS } .import.json WORKS IF YOU MAKE THE WISH voeu 'AstroAPI' " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && continue
2022-10-26 18:26:50 +02:00
fi
2022-10-04 23:10:31 +02:00
fi
2022-10-21 14:38:25 +02:00
2022-10-04 23:10:31 +02:00
done
exit 0