2023-09-01 01:25:25 +02:00
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
################################################################################
## API: UPLANET
## Dedicated to OSM2IPFS & UPlanet Client App
2023-09-12 16:46:15 +02:00
# ?uplanet=EMAIL&salt=LAT&pepper=LON&g1pub=PASS
2023-09-01 01:25:25 +02:00
## https://git.p2p.legal/qo-op/OSM2IPFS
################################################################################
MY_PATH = " `dirname \" $0 \"` " # relative
MY_PATH = " `( cd \" $MY_PATH \" && pwd )` " # absolutized and normalized
. " ${ MY_PATH } /../tools/my.sh "
start = ` date +%s`
echo " PORT= $1
THAT = $2
AND = $3
THIS = $4
APPNAME = $5
WHAT = $6
OBJ = $7
VAL = $8
MOATS = $9
COOKIE = $10 "
PORT = " $1 " THAT = " $2 " AND = " $3 " THIS = " $4 " APPNAME = " $5 " WHAT = " $6 " OBJ = " $7 " VAL = " $8 " MOATS = " $9 " COOKIE = " $10 "
### transfer variables according to script
HTTPCORS = " HTTP/1.1 200 OK
Access-Control-Allow-Origin: ${ myASTROPORT }
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET
Server: Astroport.ONE
Content-Type: text/html; charset = UTF-8
"
function urldecode( ) { : " ${ *//+/ } " ; echo -e " ${ _ //%/ \\ x } " ; }
2023-09-03 21:39:28 +02:00
## CHECK FOR NOT PUBLISHING ALREADY (AVOID IPNS CRUSH)
alreadypublishing = $( ps axf --sort= +utime | grep -w 'ipfs name publish --key=' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
if [ [ ${ alreadypublishing } ] ] ; then
echo " $HTTPCORS ERROR - (╥☁╥ ) - IPFS ALREADY PUBLISHING RETRY LATER " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
exit 1
fi
## START MANAGING UPLANET LAT/LON & PLAYER
2023-09-01 01:25:25 +02:00
mkdir -p ~/.zen/tmp/${ MOATS } /
2023-09-12 16:46:15 +02:00
## GET & VERIFY PARAM
2023-09-01 01:25:25 +02:00
PLAYER = ${ THAT }
2023-09-02 03:50:54 +02:00
[ [ ${ PLAYER } = = "salt" ] ] && PLAYER = "@"
2023-09-01 01:25:25 +02:00
2023-09-08 00:58:49 +02:00
[ [ ${ AND } != "salt" ] ] \
&& ( echo " $HTTPCORS ERROR - BAD PARAMS " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && echo "(☓‿‿☓) Execution time was " ` expr $( date +%s) - $start ` seconds. && exit 0
SALT = ${ THIS }
2023-09-01 03:56:55 +02:00
2023-09-02 00:43:20 +02:00
[ [ ${ SALT } = = "0" ] ] && SALT = "0.00"
2023-09-01 03:56:55 +02:00
input_number = ${ SALT }
2023-09-02 02:44:50 +02:00
if [ [ ! $input_number = ~ ^-?[ 0-9] { 1,3} ( \. [ 0-9] { 1,2} ) ?$ ] ] ; then
2023-09-01 03:56:55 +02:00
( echo " $HTTPCORS ERROR - BAD LAT $LAT " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && echo "(☓‿‿☓) Execution time was " ` expr $( date +%s) - $start ` seconds. && exit 0
else
2023-09-03 00:47:24 +02:00
# If input_number has one decimal digit, add a trailing zero
if [ [ ${ input_number } = ~ ^-?[ 0-9] +\. [ 0-9] $ ] ] ; then
input_number = " ${ input_number } 0 "
elif [ [ ${ input_number } = ~ ^-?[ 0-9] +$ ] ] ; then
# If input_number is an integer, add ".00"
input_number = " ${ input_number } .00 "
fi
# Convert input_number to LAT with two decimal digits
LAT = " ${ input_number } "
2023-09-01 03:56:55 +02:00
fi
2023-09-08 00:56:57 +02:00
PEPPER = ${ WHAT }
2023-09-08 00:54:39 +02:00
[ [ ${ APPNAME } != "pepper" ] ] \
2023-09-08 00:51:13 +02:00
&& ( echo " $HTTPCORS ERROR - BAD PARAMS " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && echo "(☓‿‿☓) Execution time was " ` expr $( date +%s) - $start ` seconds. && exit 0
2023-09-01 01:25:25 +02:00
2023-09-02 00:43:20 +02:00
[ [ ${ PEPPER } = = "0" ] ] && PEPPER = "0.00"
2023-09-01 03:56:55 +02:00
input_number = ${ PEPPER }
2023-09-02 02:44:50 +02:00
if [ [ ! $input_number = ~ ^-?[ 0-9] { 1,3} ( \. [ 0-9] { 1,2} ) ?$ ] ] ; then
2023-09-01 03:56:55 +02:00
( echo " $HTTPCORS ERROR - BAD LON $LON " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && echo "(☓‿‿☓) Execution time was " ` expr $( date +%s) - $start ` seconds. && exit 0
else
2023-09-03 00:47:24 +02:00
# If input_number has one decimal digit, add a trailing zero
if [ [ ${ input_number } = ~ ^-?[ 0-9] +\. [ 0-9] $ ] ] ; then
input_number = " ${ input_number } 0 "
elif [ [ ${ input_number } = ~ ^-?[ 0-9] +$ ] ] ; then
# If input_number is an integer, add ".00"
input_number = " ${ input_number } .00 "
fi
# Convert input_number to LAT with two decimal digits
LON = " ${ input_number } "
2023-09-01 03:56:55 +02:00
fi
2023-09-01 01:25:25 +02:00
2023-10-10 13:58:58 +02:00
# NOT RECEIVING PASS. WAS USED TO SECURE PLAYER UMAP KEY... (24s sectors strategy apply now)
#~ PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
#~ ## RECEIVED PASS ## CAN BE USED TO SELECT TW TEMPLATE
#~ VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL
#~ [[ ${OBJ} == "g1pub" && ${VAL} != "" ]] && PASS=${VAL}
#~ echo "PASS for Umap $LAT $LON is $PASS"
############################################
#### TODO USE THIS PARAMETER TO SELECT TW TEMPLATE
2023-10-07 16:54:08 +02:00
2023-09-01 03:56:55 +02:00
### CHECK PLAYER EMAIL
EMAIL = " ${ PLAYER ,, } " # lowercase
2023-09-01 01:25:25 +02:00
2023-09-01 20:15:15 +02:00
[ [ ! ${ EMAIL } ] ] && ( echo " $HTTPCORS ERROR - MISSING ${ EMAIL } FOR UPLANET LANDING " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && echo "(☓‿‿☓) Execution time was " ` expr $( date +%s) - $start ` seconds. && exit 0
2023-09-01 01:25:25 +02:00
2023-09-12 16:46:15 +02:00
################################ START WORKING WITH KEYS
2023-09-06 14:08:20 +02:00
### SESSION "$LAT" "$LON" KEY
2023-09-04 03:38:48 +02:00
${ MY_PATH } /../tools/keygen -t ipfs -o ~/.zen/tmp/${ MOATS } /_ipns.priv " $LAT " " $LON "
UMAPNS = $( ipfs key import ${ MOATS } -f pem-pkcs8-cleartext ~/.zen/tmp/${ MOATS } /_ipns.priv)
2023-09-08 01:02:23 +02:00
ipfs key rm ${ MOATS } && echo "IPNS key identified"
2023-09-04 03:38:48 +02:00
###
2023-09-06 14:08:20 +02:00
REDIR = " ${ myIPFS } /ipns/ ${ UMAPNS } "
2023-09-12 16:46:15 +02:00
echo " Umap : $REDIR "
2023-09-06 00:34:38 +02:00
2023-09-01 03:56:55 +02:00
## CHECK WHAT IS EMAIL
if [ [ " ${ EMAIL } " = ~ ^[ a-zA-Z0-9._%+-] +@[ a-zA-Z0-9.-] +\. [ a-zA-Z] { 2,4} $ ] ] ; then
2023-09-04 03:38:48 +02:00
2023-09-01 03:56:55 +02:00
echo " VALID ${ EMAIL } EMAIL OK "
2023-09-12 16:46:15 +02:00
2023-09-04 03:38:48 +02:00
## CHECK if TW is HERE
[ [ -s ~/.zen/tmp/${ MOATS } /TW/${ EMAIL } /index.html ] ] \
2023-09-06 00:34:38 +02:00
&& ( echo " $HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url=' ${ REDIR } /TW/ ${ EMAIL } /index.html'\" /> ' " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) \
2023-09-04 03:38:48 +02:00
&& echo " TW is HERE : $EMAIL " && exit 0
2023-09-01 03:56:55 +02:00
else
2023-09-04 03:38:48 +02:00
2023-09-12 17:19:36 +02:00
echo " BAD EMAIL $LAT $LON - OPEN UMAP IPNS LINK - "
2023-09-04 03:14:39 +02:00
( echo " $HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url=' ${ REDIR } '\" /> ' " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && exit 0
2023-09-04 03:38:48 +02:00
2023-09-01 03:56:55 +02:00
fi
2023-09-01 01:25:25 +02:00
# UPLANET #############################################
## OCCUPY COMMON CRYPTO KEY CYBERSPACE
2023-09-02 22:39:18 +02:00
## SALT="$LAT" PEPPER="$LON"
2023-09-01 01:25:25 +02:00
######################################################
echo " UMAP = $LAT : $LON "
2023-09-12 16:46:15 +02:00
echo "# CALCULATING UMAP G1PUB WALLET"
2023-09-04 03:38:48 +02:00
${ MY_PATH } /../tools/keygen -t duniter -o ~/.zen/tmp/${ MOATS } /_cesium.key " $LAT " " $LON "
G1PUB = $( cat ~/.zen/tmp/${ MOATS } /_cesium.key | grep 'pub:' | cut -d ' ' -f 2)
2023-09-01 01:25:25 +02:00
[ [ ! ${ G1PUB } ] ] && ( echo " $HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && exit 1
2023-09-12 16:46:15 +02:00
echo " UMAP G1PUB : ${ G1PUB } "
2023-09-01 01:25:25 +02:00
echo "# CALCULATING UMAP IPNS ADDRESS"
2023-09-02 00:08:40 +02:00
mkdir -p ~/.zen/tmp/${ MOATS } /${ G1PUB }
2023-09-02 22:39:18 +02:00
mkdir -p ~/.zen/tmp/${ MOATS } /${ LAT } _${ LON }
2023-09-02 22:32:59 +02:00
2023-09-01 01:25:25 +02:00
ipfs key rm ${ G1PUB } > /dev/null 2>& 1
2023-09-02 00:08:40 +02:00
rm ~/.zen/tmp/${ MOATS } /_ipns.priv 2>/dev/null
2023-10-07 17:03:01 +02:00
2023-09-02 00:08:40 +02:00
${ MY_PATH } /../tools/keygen -t ipfs -o ~/.zen/tmp/${ MOATS } /_ipns.priv " $LAT " " $LON "
UMAPNS = $( ipfs key import ${ G1PUB } -f pem-pkcs8-cleartext ~/.zen/tmp/${ MOATS } /_ipns.priv )
2023-10-07 17:03:01 +02:00
2023-09-01 01:25:25 +02:00
[ [ ! ${ UMAPNS } ] ] && ( echo " $HTTPCORS ERROR - (╥☁╥ ) - UMAPNS COMPUTATION DISFUNCTON " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && exit 1
2023-09-06 14:08:20 +02:00
echo " UMAPNS : ${ myIPFS } /ipns/ ${ UMAPNS } "
2023-09-01 01:25:25 +02:00
2023-09-04 03:14:39 +02:00
### CREATE A G1VISA FOR PLAYER (NO TW EXISTS YET for EMAIL)
2023-09-03 01:50:06 +02:00
if [ [ ! -f ~/.zen/tmp/${ MOATS } /TW/${ EMAIL } /index.html ] ] ; then
2023-09-06 14:40:57 +02:00
## CHECK IF TW EXISTS FOR THIS EMAIL ALREADY
$( $MY_PATH /../tools/search_for_this_email_in_players.sh ${ EMAIL } ) ## export ASTROTW and more
2023-09-12 16:46:15 +02:00
echo " export ASTROPORT= ${ ASTROPORT } ASTROTW= ${ ASTROTW } ASTROG1= ${ ASTROG1 } ASTROMAIL= ${ EMAIL } ASTROFEED= ${ FEEDNS } "
2023-09-07 17:43:14 +02:00
[ [ ${ ASTROTW } ] ] && ( echo " $HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='/ipns/ ${ ASTROTW } '\" /> " | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 & ) && exit 1
2023-09-06 14:40:57 +02:00
2023-09-07 14:26:16 +02:00
NPASS = $( echo " ${ RANDOM } ${ RANDOM } ${ RANDOM } ${ RANDOM } " | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
2023-09-28 14:32:20 +02:00
2023-09-12 16:46:15 +02:00
## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT
2023-09-06 14:40:57 +02:00
(
2023-10-07 17:21:16 +02:00
echo VISA.new.sh " ${ EMAIL } " " ${ NPASS } " " ${ EMAIL } " "UPlanet" " /ipns/ ${ UMAPNS } " " ${ LAT } " " ${ LON } "
2023-09-28 14:32:20 +02:00
##### (☉_☉ ) #######
2023-10-03 22:50:59 +02:00
${ MY_PATH } /../RUNTIME/VISA.new.sh " ${ EMAIL } " " ${ NPASS } " " ${ EMAIL } " "UPlanet" " /ipns/ ${ UMAPNS } " " ${ LAT } " " ${ LON } " >> ~/.zen/tmp/email.${ EMAIL } .${ MOATS } .txt
2023-09-06 14:40:57 +02:00
${ MY_PATH } /../tools/mailjet.sh " ${ EMAIL } " ~/.zen/tmp/email.${ EMAIL } .${ MOATS } .txt ## Send VISA.new log to EMAIL
2023-10-09 16:03:23 +02:00
2023-10-07 17:21:16 +02:00
end = ` date +%s`
echo "(TW REGISTRATION) Operation time was " ` expr $end - $start ` seconds.
2023-09-06 14:40:57 +02:00
) &
2023-09-12 16:46:15 +02:00
2023-09-03 00:47:24 +02:00
fi
2023-09-06 14:08:20 +02:00
########################################
2023-09-03 20:11:54 +02:00
################################################################################
## WRITE INTO 12345 SWARM CACHE LAYER
2023-09-03 21:25:48 +02:00
mkdir -p ~/.zen/tmp/${ IPFSNODEID } /UPLANET/_${ LAT } _${ LON } /_visitors
2023-09-03 20:11:54 +02:00
echo " <meta http-equiv=\"refresh\" content=\"0; url='/ipns/ ${ UMAPNS } '\" /> " > ~/.zen/tmp/${ IPFSNODEID } /UPLANET/_${ LAT } _${ LON } /index.html
2023-09-03 21:25:48 +02:00
echo " ${ EMAIL } : ${ IPFSROOT } : ${ MOATS } " >> ~/.zen/tmp/${ IPFSNODEID } /UPLANET/_${ LAT } _${ LON } /_visitors/${ EMAIL } .log
2023-09-03 20:11:54 +02:00
########################################
2023-09-06 14:08:20 +02:00
2023-10-10 13:52:01 +02:00
## Calculating TW IPNS ADDRESS
TWADD = $( ${ MY_PATH } /../tools/keygen -t ipfs " ${ EMAIL } " " ${ NPASS } " )
2023-09-02 00:08:40 +02:00
## HTTP nc ON PORT RESPONSE
2023-09-01 20:15:15 +02:00
echo " $HTTPCORS
<html>
<head>
2023-09-07 17:43:14 +02:00
<title>[ Astroport] $LAT $LON + ${ EMAIL } </title>
2023-09-10 16:26:52 +02:00
<meta http-equiv= \" refresh\" content = \" 100; url = '${myIPFS}/ipns/${TWADD}#AstroID' \" />
2023-09-07 17:43:14 +02:00
<style>
#countdown { display: flex; justify-content: center; align-items: center; color: #0e2c4c; font-size: 20px; width: 60px; height: 60px; background-color: #e7d9fc; border-radius: 50%;}
</style>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
background-color: #f0f0f0;
padding: 20px;
}
h1 {
color: #0077cc;
}
h2 {
color: #333;
}
img {
cursor: pointer;
}
</style>
2023-09-01 20:15:15 +02:00
</head><body>
2023-09-08 00:51:13 +02:00
<h1>UPlanet Registration</h1>
2023-10-10 13:52:01 +02:00
Your Key seeds are:<br>
<br>
<h2>${ EMAIL } </h2>
2023-09-08 01:22:41 +02:00
<h1>${ NPASS } </h1>
2023-10-10 13:52:01 +02:00
Use this credentials to continue registration on <a target = '_blank' href = 'https://cesium.app' >Cesium</a> & <a target = '_blank' href = 'https://gchange.fr' >Gchange</a>
<br>
2023-09-10 00:47:34 +02:00
---
2023-09-10 16:26:52 +02:00
<br>Try <a target = \" _new\" href = \" ${ myIPFS } /ipns/${ TWADD } \" >TWPORTATION</a>
2023-09-08 00:51:13 +02:00
<br>in
2023-09-07 17:43:14 +02:00
<h1><center><div id = 'countdown' ></div></center></h1>
<script>
2023-09-10 16:26:52 +02:00
var timeLeft = 90;
2023-09-07 17:43:14 +02:00
var elem = document.getElementById( 'countdown' ) ;
var timerId = setInterval( countdown, 1000) ;
function countdown( ) {
if ( timeLeft = = -1) {
clearTimeout( timerId) ;
doSomething( ) ;
} else {
elem.innerHTML = timeLeft + ' s' ;
timeLeft--;
}
}
</script>
2023-09-03 01:24:42 +02:00
---
2023-09-01 20:15:15 +02:00
<br>
2023-09-07 17:43:14 +02:00
( ⚆_⚆) <br>CONSOLE<br>
2023-09-03 00:03:05 +02:00
$( cat ~/.zen/tmp/email.${ EMAIL } .${ MOATS } .txt 2>/dev/null)
2023-09-07 17:43:14 +02:00
<br>( ☉_☉ ) <br>
2023-09-08 00:51:13 +02:00
<br><br>${ EMAIL } REGISTERED on UMAP : $LAT /$LON : ${ MOATS } : $( date)
2023-09-07 17:43:14 +02:00
</body>
</html>" > ~/.zen/tmp/ ${ MOATS } /http.rep
2023-09-01 01:25:25 +02:00
cat ~/.zen/tmp/${ MOATS } /http.rep | nc -l -p ${ PORT } -q 1 > /dev/null 2>& 1 &
end = ` date +%s`
2023-09-06 14:08:20 +02:00
echo "(UPLANET) Operation time was " ` expr $end - $start ` seconds.
2023-09-01 01:25:25 +02:00
exit 0