forked from STI/Astroport.ONE
Compare commits
89 Commits
26122a1422
...
8088394bd5
Author | SHA1 | Date |
---|---|---|
fred | 8088394bd5 | |
fred | e7d61bfca0 | |
fred | 155640fb2a | |
fred | 337e842c27 | |
fred | 0c5ba0af2d | |
fred | 4435717e5f | |
fred | c08db1782c | |
fred | 59eae6afe8 | |
fred | 65bffe8931 | |
fred | e9577844cb | |
fred | 8d1de09958 | |
fred | be48e0a52a | |
fred | 2af0af955b | |
fred | 8850bfa301 | |
fred | 53c5df9246 | |
fred | d289d38c99 | |
fred | 82d9e72568 | |
fred | edf7666915 | |
fred | 7c03e22101 | |
fred | 847d4eccdc | |
fred | ee633948f8 | |
fred | 2487607875 | |
fred | 017186ddbb | |
fred | 5044400869 | |
fred | 3040a8eff0 | |
fred | 9194845c8d | |
fred | cbc1b24f74 | |
fred | 674a8264e7 | |
fred | 29c2ad7051 | |
fred | 20097f47d4 | |
fred | 300cc6ecfc | |
fred | eea825e1ea | |
fred | 369dc621e0 | |
fred | e170453c08 | |
fred | eb978ff5bc | |
fred | 1979388f5c | |
fred | 0c979db133 | |
fred | 872ab9a1af | |
fred | 6621311983 | |
fred | 7d815b67d0 | |
fred | 57979b66bc | |
fred | f01e0510e9 | |
fred | b7ed00f0ef | |
qo-op | 7cb303e6b1 | |
Yann Autissier | 83b4422502 | |
Yann Autissier | 31608784f6 | |
fred | c3510a1a93 | |
fred | 1124db1837 | |
aya | 41efb1ee2f | |
aya | e26d685118 | |
fred | 9a552f92b6 | |
aya | 72de1568ce | |
Yann Autissier | a8941d0b17 | |
fred | 86a32995ea | |
fred | a53223f887 | |
fred | 3699d5bfff | |
fred | 1ba3b338f5 | |
Boris | 779a823456 | |
fred | 32f6824e4b | |
fred | b580c42a2c | |
Boris | 5da69c40b3 | |
Yann Autissier | 08c287bbb0 | |
fred | d39608c18b | |
fred | 08233a3c23 | |
fred | 8300d8ccfe | |
fred | 30ca1b0c58 | |
fred | a3eb8a8d51 | |
fred | 3c49de86ee | |
fred | f226666776 | |
fred | b3d11dba0d | |
fred | 37d51db975 | |
fred | 4c7fa5b821 | |
fred | 7b1ef13d43 | |
qo-op | 7ca11f2920 | |
fred | abca8a423b | |
fred | a06f6ced06 | |
fred | 600059cfb3 | |
fred | 5129f17690 | |
fred | 761911b909 | |
fred | 9f83ac5468 | |
fred | 0f878e922b | |
fred | ada50bb265 | |
fred | ec3ad83c13 | |
fred | 0623b9e1c9 | |
Yann Autissier | 819e330bb1 | |
fred | 9522c4186f | |
fred | 0e5a16885e | |
qo-op | 64c7725dd1 | |
Yann Autissier | ba01d0f602 |
11
.env.dist
11
.env.dist
|
@ -1,9 +1,2 @@
|
|||
DOCKER_IMAGES_MYOS=x2go:xfce-debian
|
||||
NODE_ASTROPORT_SERVICE_1234_TAGS=urlprefix-astroport.${DOMAIN}/
|
||||
NODE_VDI_ECRYPTERS=zen
|
||||
NODE_VDI_LANG=${LANG}
|
||||
NODE_VDI_PORT=45720
|
||||
NODE_VDI_SUDOERS=
|
||||
NODE_VDI_TZ=UTC
|
||||
NODE_VDI_USERS=zen
|
||||
UFW_UPDATE_ASTROPORT=1234 12245:12445/tcp
|
||||
DOCKER_COMPOSE_VDI=true
|
||||
DOMAIN=localhost
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
.env
|
||||
*.pyc
|
||||
|
|
445
12345.sh
445
12345.sh
|
@ -5,7 +5,7 @@
|
|||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
################################################################################
|
||||
## ASTROPORT API SERVER http://$myIP:1234
|
||||
## ASTROPORT API SERVER http://${myHOST}:1234
|
||||
## ATOMIC GET REDIRECT TO ONE SHOT WEB SERVICE THROUGH PORTS
|
||||
## ASYNCHRONOUS IPFS API
|
||||
################################################################################
|
||||
|
@ -17,8 +17,9 @@ MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
|||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||
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])/")
|
||||
[[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
|
||||
|
||||
[[ $isLAN ]] && myHOST="ipfs.localhost" && myHOSTPort="ipfs.localhost:8080" && myHTTP="http://" && myASTROPORT="http://astroport.localhost:1234" ## LAN STATION
|
||||
[[ ! $isLAN ]] && myHOST="astroport.copylaradio.com" && myHOSTPort="ipfs.copylaradio.com" && myHTTP="https://" && myASTROPORT="https://astroport.copylaradio.com" ## WAN STATION
|
||||
|
||||
PORT=12345
|
||||
|
||||
|
@ -30,7 +31,7 @@ mkdir -p ~/.zen/tmp/coucou/
|
|||
|
||||
## CHECK FOR ANY ALREADY RUNNING nc
|
||||
ncrunning=$(ps auxf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] && echo "ERROR - API Server Already Running - http://$myIP:1234/?salt=totodu56&pepper=totodu56&getipns " && exit 1
|
||||
[[ $ncrunning ]] && echo "ERROR - API Server Already Running - ${myHTTP}${myHOST}:1234/?salt=totodu56&pepper=totodu56&getipns " && exit 1
|
||||
## NOT RUNNING TWICE
|
||||
|
||||
# Some client needs to respect that
|
||||
|
@ -42,50 +43,56 @@ Server: Astroport.ONE
|
|||
Content-Type: text/html; charset=UTF-8
|
||||
|
||||
"
|
||||
|
||||
echo "_________________________________________________________"
|
||||
echo "LAUNCHING Astroport API Server - $TUBE - "
|
||||
echo "_________________________________________________________ $(date)"
|
||||
echo "LAUNCHING Astroport API Server - TUBE : $LIBRA - "
|
||||
echo
|
||||
echo "CREATE GCHANGE + TW http://$myIP:1234/?salt=totodu56&pepper=totodu56&g1pub=on&email=fred@astroport.com"
|
||||
echo "GCHANGE ${myASTROPORT}/?salt=totodu56&pepper=totodu56&g1pub"
|
||||
echo "OPEN TW ${myASTROPORT}/?salt=totodu56&pepper=totodu56&g1pub=astro"
|
||||
echo "GCHANGE MESSAGING ${myASTROPORT}/?salt=totodu56&pepper=totodu56&messaging"
|
||||
echo "CREATE SAME PLAYER : ${myASTROPORT}/?salt=totodu56&pepper=totodu56&g1pub=on&email=totodu56@yopmail.com"
|
||||
echo
|
||||
echo "OPEN TW R/W http://$myIP:1234/?salt=totodu56&pepper=totodu56&official"
|
||||
echo "NEW PLAYER : ${myASTROPORT}/?salt=${RANDOM}&pepper=${RANDOM}&g1pub=on&email=astro${RANDOM}@yopmail.com"
|
||||
echo
|
||||
echo "GCHANGE MESSAGING http://$myIP:1234/?salt=totodu56&pepper=totodu56&messaging"
|
||||
echo "GCHANGE PLAYER URL http://$myIP:1234/?salt=totodu56&pepper=totodu56&g1pub"
|
||||
echo "BunkerBOX : ${myASTROPORT}/?salt=totodu56&pepper=totodu56&g1pub=_URL_&email=totodu56@yopmail.com"
|
||||
echo
|
||||
echo "TESTCRAFT http://$myIP:1234/?salt=totodu56&pepper=totodu56&testcraft=on&nodeid=12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j&dataid=QmPXhrqQrS1bePKJUPH9cJ2qe4RrNjaJdRXaJzSjxWuvDi"
|
||||
echo "TESTCRAFT ${myASTROPORT}/?salt=totodu56&pepper=totodu56&testcraft=on&nodeid=12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j&dataid=QmPXhrqQrS1bePKJUPH9cJ2qe4RrNjaJdRXaJzSjxWuvDi"
|
||||
echo "_________________________________________________________"
|
||||
|
||||
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
||||
|
||||
#############################
|
||||
########## MAIN ###############
|
||||
#############################
|
||||
while true; do
|
||||
|
||||
start=`date +%s`
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
## CHANGE NEXT PORT (HERE YOU CREATE A SOCKET QUEUE)
|
||||
|
||||
# EACH VISITOR RECEIVE COMMAND RESPONSE ON
|
||||
## RANDOM PORT = RESPONSE SOCKET & IPNS SESSION TOKEN
|
||||
|
||||
[ ${PORT} -le 12345 ] && PORT=$((PORT+${RANDOM:0:2})) || PORT=$((PORT-${RANDOM:0:2}))
|
||||
## RANDOM PORT SWAPPINESS AVOIDING COLLISION
|
||||
|
||||
## CHECK PORT IS FREE
|
||||
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
|
||||
[[ $pidportinuse ]] && kill -9 $pidportinuse && echo "KILLING $portinuse " && continue
|
||||
## RANDOM PORT SWAPPINESS AVOIDING COLLISION
|
||||
## CHECK PORT IS FREE & KILL OLD ONE
|
||||
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | awk '{gsub(/^ +| +$/,"")} {print $0}' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ $pidportinuse ]] && kill -9 $pidportinuse && echo "KILLING $pidportinuse" && continue
|
||||
|
||||
## CHECK 12345 PORT RUNNING (PUBLISHING IPNS SWARM MAP)
|
||||
## CHECK 12345 PORT RUNNING (STATION FoF MAP)
|
||||
maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
#maprunning=$(ps auxf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ ! $maprunning ]] && ($MY_PATH/_12345.sh &) && echo '(ᵔ◡◡ᵔ) LAUNCHING http://'$myIP:'12345 (ᵔ◡◡ᵔ)'
|
||||
[[ ! $maprunning ]] && ($MY_PATH/_12345.sh &) && echo '(ᵔ◡◡ᵔ) LAUNCHING '${myHTTP}${myHOST}:'12345 (ᵔ◡◡ᵔ)'
|
||||
|
||||
############### IPNS SESSION KEY TRY LATER
|
||||
############### ACTIVATE USE ON QUICK IPFS DRIVE
|
||||
### CREATE IPNS KEY - ACTIVATE WHITH ENOUGH BOOTSTRAP
|
||||
### echo
|
||||
### ipfs key rm ${PORT} > /dev/null 2>&1
|
||||
### SESSIONNS=$(ipfs key gen ${PORT})
|
||||
### echo "IPNS SESSION http://$myIP:8080/ipns/$SESSIONNS CREATED"
|
||||
#~ echo
|
||||
#~ ipfs key rm ${PORT} > /dev/null 2>&1
|
||||
#~ SESSIONNS=$(ipfs key gen ${PORT})
|
||||
#~ echo "IPNS SESSION ${myHTTP}${myHOST}Port/ipns/$SESSIONNS CREATED"
|
||||
|
||||
### # USE IT #
|
||||
### 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
|
||||
### ipfs name publish --allow-offline -t 180s --key=${PORT} /ipfs/$MIAM &
|
||||
|
||||
###############
|
||||
###############
|
||||
|
||||
|
@ -93,18 +100,22 @@ while true; do
|
|||
SALT=""; PEPPER=""; APPNAME=""
|
||||
|
||||
############### ############### ############### ############### templates/index.http
|
||||
# REPLACE myIP in http response template (fixing next API meeting point)
|
||||
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
|
||||
# REPLACE myHOST in http response template (fixing next API meeting point)
|
||||
sed "s~127.0.0.1:12345~${myHOST}:${PORT}~g" $HOME/.zen/Astroport.ONE/templates/index.http > ~/.zen/tmp/coucou/${MOATS}.myHOST.http
|
||||
sed -i "s~127.0.0.1~${myHOST}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http
|
||||
sed -i "s~:12345~:${PORT}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http
|
||||
|
||||
sed -i "s~_SESSIONLNK_~${myHTTP}${myHOSTPort}/ipns/${SESSIONNS}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http
|
||||
|
||||
sed -i "s~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http ## NODE PUBLISH
|
||||
sed -i "s~_HOSTNAME_~$(hostname)~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http ## HOSTNAME
|
||||
############### ############### ############### ###############
|
||||
|
||||
############################################################################
|
||||
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/coucou/${MOATS}.myIP.http on PORT 1234 (LOOP BLOCKING POINT)
|
||||
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/coucou/${MOATS}.myHOST.http on PORT 1234 (LOOP BLOCKING POINT)
|
||||
############################################################################
|
||||
REQ=$(cat $HOME/.zen/tmp/coucou/${MOATS}.myIP.http | nc -l -p 1234 -q 1) ## # WAIT FOR 1234 CONTACT
|
||||
REQ=$(cat $HOME/.zen/tmp/coucou/${MOATS}.myHOST.http | nc -l -p 1234 -q 1) ## # WAIT FOR 1234 PORT CONTACT
|
||||
|
||||
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||
HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
|
||||
|
@ -112,10 +123,10 @@ while true; do
|
|||
[[ $URL == "/test" || $URL == "" ]] && continue
|
||||
|
||||
echo "************************************************************************* "
|
||||
echo "ASTROPORT 1234 UP & RUNNING.......................... http://$HOST:1234 PORT"
|
||||
echo "${MOATS} NEXT COMMAND DELIVERY PAGE http://$HOST:${PORT}"
|
||||
echo "ASTROPORT 1234 UP & RUNNING.......................... ${myHTTP}$HOST:1234 PORT"
|
||||
echo "${MOATS} NEXT COMMAND DELIVERY PAGE ${myHTTP}$HOST:${PORT}"
|
||||
|
||||
espeak "Ding" > /dev/null 2>&1
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && espeak "Ding" >/dev/null 1>&2
|
||||
|
||||
echo "URL" > ~/.zen/tmp/coucou/${MOATS}.url ## LOGGING URL
|
||||
|
||||
|
@ -123,73 +134,81 @@ while true; do
|
|||
start=`date +%s`
|
||||
|
||||
############################################################################
|
||||
## / CONTACT - PUBLISH HTML HOMEPAGE (ADD HTTP HEADER)
|
||||
## / CONTACT
|
||||
if [[ $URL == "/" ]]; then
|
||||
echo "/ CONTACT : http://$HOST:1234"
|
||||
echo "___________________________ Preparing register.html"
|
||||
echo "/ CONTACT : ${myHTTP}$HOSTP"
|
||||
echo "___________________________ Preparing default return register.html"
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/coucou/${MOATS}.index.redirect ## HTTP 1.1 HEADER + HTML BODY
|
||||
sed "s~127.0.0.1~$HOST~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
|
||||
|
||||
## Random Background image ;)
|
||||
sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
sed "s~http://127.0.0.1:1234~${myHTTP}$HOSTP~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
|
||||
sed -i "s~http://127.0.0.1:8080~${myHTTP}${myHOSTPort}~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
|
||||
|
||||
## Random Background image ;)
|
||||
sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
end=`date +%s`
|
||||
echo " (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
echo " (‿/‿) ${myHTTP}$HOSTP / Execution time was "`expr $end - $start` seconds.
|
||||
continue
|
||||
fi
|
||||
############################################################################
|
||||
############################################################################
|
||||
|
||||
|
||||
############################################################################
|
||||
# URL DECODING
|
||||
############################################################################
|
||||
|
||||
echo "=================================================="
|
||||
echo "GET RECEPTION : $URL"
|
||||
arr=(${URL//[=&]/ })
|
||||
|
||||
# CHECK APPNAME
|
||||
APPNAME=$(urldecode ${arr[4]})
|
||||
WHAT=$(urldecode ${arr[5]})
|
||||
|
||||
[[ ${arr[0]} == "" || ${arr[1]} == "" ]] && (echo "$HTTPCORS ERROR - MISSING DATA" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
APPNAME=$(urldecode ${arr[4]} | xargs)
|
||||
WHAT=$(urldecode ${arr[5]} | xargs)
|
||||
|
||||
########## CHECK GET PARAM NAMES
|
||||
###################################################################################################
|
||||
[[ ${arr[0]} == "" || ${arr[1]} == "" ]] && (echo "$HTTPCORS ERROR - MISSING DATA" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
|
||||
###################################################################################################
|
||||
# API ZERO ## Made In Zion & La Bureautique
|
||||
if [[ ${arr[0]} == "salt" ]]; then
|
||||
[[ ! $APPNAME ]] && echo "NO APPNAME - CONTINUE" && continue
|
||||
############################################################################
|
||||
# WRITING API # SALT # PEPPER # MAKING THE KEY EXIST #########
|
||||
################### KEY GEN ###################################
|
||||
echo ">>>>>>>>>>>>>> Application LaBureautique >><< APPNAME = $APPNAME <<<<<<<<<<<<<<<<<<<<"
|
||||
|
||||
SALT=$(urldecode ${arr[1]} | xargs);
|
||||
[[ ! $SALT ]] && (echo "$HTTPCORS ERROR - SALT MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
|
||||
PEPPER=$(urldecode ${arr[3]} | xargs)
|
||||
[[ ! $PEPPER ]] && (echo "$HTTPCORS ERROR - PEPPER MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
|
||||
APPNAME=$(urldecode ${arr[4]} | xargs)
|
||||
[[ ! $APPNAME ]] && (echo "$HTTPCORS ERROR - APPNAME MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
|
||||
WHAT=$(urldecode ${arr[5]} | xargs)
|
||||
|
||||
## SAVE "salt" "pepper" DEBUG REMOVE OR PASS ENCRYPT FOR SECURITY REASON
|
||||
echo "PLAYER CREDENTIALS : \"$SALT\" \"$PEPPER\""
|
||||
echo "PLAYER : \"$SALT\" \"$PEPPER\" : $APPNAME ($WHAT)"
|
||||
echo "\"$SALT\" \"$PEPPER\"" > ~/.zen/tmp/coucou/${MOATS}.secret.june
|
||||
|
||||
# CALCULATING ${MOATS}.secret.key + G1PUB
|
||||
${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)
|
||||
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
echo "G1PUB : ${G1PUB}"
|
||||
|
||||
## CALCULATING IPNS ADDRESS
|
||||
## CALCULATING ${MOATS}.${G1PUB}.ipns.key ADDRESS
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
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 )
|
||||
echo "ASTRONAUTE TW : http://$HOST:8080/ipns/${ASTRONAUTENS}"
|
||||
[[ ! ${ASTRONAUTENS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - ASTRONAUTENS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
|
||||
echo "TW ADDRESS : ${myHTTP}$HOSTP/ipns/${ASTRONAUTENS}"
|
||||
echo
|
||||
|
||||
################### KEY GEN ###################################
|
||||
|
||||
# Get PLAYER wallet amount
|
||||
( ## SUB PROCESS
|
||||
COINS=$($MY_PATH/tools/jaklis/jaklis.py -k ~/.zen/tmp/coucou/${MOATS}.secret.key balance)
|
||||
|
@ -198,12 +217,15 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
|
|||
echo "G1WALLET (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
) &
|
||||
########################################
|
||||
## ARCHIVE TOCTOC ${WHAT}S & KEEPS LOGS CLEAN
|
||||
|
||||
########################################
|
||||
## ARCHIVE TOCTOC ${WHAT}S KEEP LOG (TODO : ERASE)
|
||||
########################################
|
||||
mkdir -p ~/.zen/game/players/.toctoc/
|
||||
ISTHERE=$(ls -t ~/.zen/game/players/.toctoc/*.${G1PUB}.ipns.key 2>/dev/null | tail -n 1)
|
||||
TTIME=$(echo $ISTHERE | rev | cut -d '.' -f 4 | cut -d '/' -f 1 | rev)
|
||||
if [[ ! $ISTHERE ]]; then
|
||||
echo "${WHAT} 1ST TOCTOC : ${MOATS}"
|
||||
echo "${APPNAME} 1ST TOCTOC : ${MOATS}"
|
||||
cp ~/.zen/tmp/coucou/${MOATS}.* ~/.zen/game/players/.toctoc/
|
||||
else ## KEEP 1ST CONTACT ONLY
|
||||
OLDONE=$(ls -t ~/.zen/tmp/coucou/*.${G1PUB}.ipns.key | tail -n 1)
|
||||
|
@ -211,10 +233,14 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
|
|||
[[ $DTIME != ${MOATS} ]] && rm ~/.zen/tmp/coucou/$DTIME.*
|
||||
fi
|
||||
|
||||
## APPNAME SLECTION ########################
|
||||
########################################
|
||||
## APPNAME SELECTION ########################
|
||||
########################################
|
||||
# MESSAGING
|
||||
if [[ $APPNAME == "messaging" || $APPNAME == "email" ]]; then
|
||||
( ## SUB PROCESS
|
||||
|
||||
( ## & SUB PROCESS
|
||||
|
||||
echo "Extracting ${G1PUB} messages..."
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/tools/jaklis/jaklis.py -k ~/.zen/tmp/coucou/${MOATS}.secret.key read -n 10 -j > ~/.zen/tmp/coucou/messin.${G1PUB}.json
|
||||
|
@ -236,16 +262,20 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
|
|||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.messaging.json >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
|
||||
### REPONSE=$(cat ~/.zen/tmp/coucou/${MOATS}.messaging.json | ipfs add -q)
|
||||
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
|
||||
### echo "SESSION http://$HOST:8080/ipns/$SESSIONNS "
|
||||
|
||||
## SEND REPONSE PROCESS IN BACKGROUD
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
#~ ( ## USING IPNS SESSION KEY
|
||||
#~ REPONSE=$(cat ~/.zen/tmp/coucou/${MOATS}.messaging.json | ipfs add -q)
|
||||
#~ ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
|
||||
#~ echo "SESSION ${myHTTP}$HOSTP/ipns/$SESSIONNS "
|
||||
#~ ) &
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) &
|
||||
|
||||
) & ## & SUB PROCESS
|
||||
|
||||
end=`date +%s`
|
||||
echo " Messaging launch (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
|
@ -254,33 +284,41 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
|
|||
######################## MESSAGING END
|
||||
|
||||
########################################
|
||||
# G1PUB -> Open Gchange Profile & Update TW cache
|
||||
# G1PUB WITH NO EMAIL -> Open Gchange Profile & Update TW cache
|
||||
########################################
|
||||
if [[ "$APPNAME" == "g1pub" && ${arr[7]} == "" ]]; then
|
||||
## NO EMAIL = REDIRECT TO GCHANGE PROFILE
|
||||
sed "s~_TWLINK_~https://www.gchange.fr/#/app/user/${G1PUB}/~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
## https://git.p2p.legal/La_Bureautique/zeg1jeux/src/branch/main/lib/Fred.class.php#L81
|
||||
echo "url='https://www.gchange.fr/#/app/user/"${G1PUB}"/'" >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
echo "GCHANGE REDIRECTING https://www.gchange.fr/#/app/user/"${G1PUB}"/"
|
||||
|
||||
[[ ${WHAT} == "astro" ]] && REPLACE="$LIBRA/ipns/$ASTRONAUTENS" \
|
||||
|| REPLACE="https://www.gchange.fr/#/app/user/${G1PUB}"
|
||||
echo ${REPLACE}
|
||||
|
||||
## REDIRECT TO TW OR GCHANGE PROFILE
|
||||
sed "s~_TWLINK_~${REPLACE}/~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
## USED BY https://git.p2p.legal/La_Bureautique/zeg1jeux/src/branch/main/lib/Fred.class.php#L81
|
||||
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
|
||||
### 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 "
|
||||
### echo "SESSION ${myHTTP}${myHOST}:8080/ipns/$SESSIONNS "
|
||||
(
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
${MY_PATH}/tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
|
||||
) &
|
||||
end=`date +%s`
|
||||
echo $APPNAME" (0‿‿0) Execution time was "`expr $end - $start` seconds.
|
||||
echo $APPNAME" (0‿‿0) ${WHAT} Execution time was "`expr $end - $start` seconds.
|
||||
continue
|
||||
fi
|
||||
########################################
|
||||
|
||||
########################################
|
||||
########################################
|
||||
#TESTCRAFT=ON nodeid dataid
|
||||
########################################
|
||||
########################################
|
||||
if [[ "$APPNAME" == "testcraft" ]]; then
|
||||
( # testcraft SUB PROCESS
|
||||
|
||||
( # testcraft & SUB PROCESS
|
||||
|
||||
start=`date +%s`
|
||||
## RECORD DATA MADE IN BROWSER (JSON)
|
||||
SALT=$(urldecode ${arr[1]} | xargs)
|
||||
|
@ -288,23 +326,26 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
|
|||
NODEID=$(urldecode ${arr[7]} | xargs)
|
||||
DATAID=$(urldecode ${arr[9]} | xargs)
|
||||
|
||||
## export PLAYER
|
||||
${MY_PATH}/tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
|
||||
|
||||
## IS IT INDEX JSON
|
||||
echo "$APPNAME IS ${WHAT}"
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}
|
||||
echo "${PLAYER} $APPNAME IS ${WHAT}"
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}
|
||||
|
||||
[[ $WHAT == "on" ]] && WHAT="json" # data mimetype (default "on" = json)
|
||||
|
||||
## TODO : modify timeout if isLAN or NOT
|
||||
[[ $isLAN ]] && WAIT=3 || WAIT=6
|
||||
echo "1ST TRY : ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT}"
|
||||
ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT}
|
||||
[[ $isLAN ]] && WAIT=3 || WAIT=12
|
||||
echo "1ST TRY : ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}"
|
||||
ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
|
||||
echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} ]]; then
|
||||
if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
|
||||
|
||||
echo "IPFS TIMEOUT >>> (°▃▃°) $DATAID STILL MISSING GATEWAY BANGING FOR IT (°▃▃°)"
|
||||
array=(https://tube.copylaradio.com/ipfs/:hash https://ipns.co/:hash https://dweb.link/ipfs/:hash https://ipfs.io/ipfs/:hash https://ipfs.fleek.co/ipfs/:hash https://ipfs.best-practice.se/ipfs/:hash https://gateway.pinata.cloud/ipfs/:hash https://gateway.ipfs.io/ipfs/:hash https://cf-ipfs.com/ipfs/:hash https://cloudflare-ipfs.com/ipfs/:hash)
|
||||
array=(https://ipfs.copylaradio.com/ipfs/:hash https://ipns.co/:hash https://dweb.link/ipfs/:hash https://ipfs.io/ipfs/:hash https://ipfs.fleek.co/ipfs/:hash https://ipfs.best-practice.se/ipfs/:hash https://gateway.pinata.cloud/ipfs/:hash https://gateway.ipfs.io/ipfs/:hash https://cf-ipfs.com/ipfs/:hash https://cloudflare-ipfs.com/ipfs/:hash)
|
||||
# size=${#array[@]}; index=$(($RANDOM % $size)); echo ${array[$index]} ## TODO CHOOSE RANDOM
|
||||
|
||||
# official ipfs best gateway from https://luke.lol/ipfs.php
|
||||
|
@ -313,18 +354,18 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
[[ $(cat ~/.zen/tmp/.ipfsgw.bad.twt | grep -w $nicegw) ]] && echo "<<< BAD GATEWAY >>> $nicegw" && continue
|
||||
gum=$(echo "$nicegw" | sed "s~:hash~$DATAID~g")
|
||||
echo "LOADING $gum"
|
||||
curl -m 5 -so ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} "$gum"
|
||||
curl -m 5 -so ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} "$gum"
|
||||
[[ $? != 0 ]] && echo "(✜‿‿✜) BYPASSING"
|
||||
|
||||
if [[ -s ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} ]]; then
|
||||
if [[ -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
|
||||
|
||||
MIME=$(mimetype -b ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT})
|
||||
GOAL=$(ipfs add -q ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT})
|
||||
MIME=$(mimetype -b ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
|
||||
GOAL=$(ipfs add -q ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
|
||||
|
||||
if [[ ${GOAL} != ${DATAID} ]]; then
|
||||
echo " (╥☁╥ ) - BAD ${WHAT} FORMAT ERROR ${MIME} - (╥☁╥ )"
|
||||
ipfs pin rm /ipfs/${GOAL}
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT}
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
# NOT A JSON AVOID BANISHMENT
|
||||
echo $nicegw >> ~/.zen/tmp/.ipfsgw.bad.twt
|
||||
continue
|
||||
|
@ -351,20 +392,20 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
fi ## NO DIRECT IPFS - GATEWAY TRY
|
||||
|
||||
## REALLY NO FILE FOUND !!!
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} ]] && \
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]] && \
|
||||
echo "$HTTPCORS ERROR (╥☁╥ ) - $DATAID TIMEOUT - (╥☁╥ )" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
## SPECIAL index.[json/html/...] MODE.
|
||||
[[ ${WHAT} == "index" ]] && cp ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}.json
|
||||
[[ ${WHAT} == "index" ]] && cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/index.json
|
||||
## TODO MAKE MULTIFORMAT DATA & INDEX
|
||||
# RWHAT=$(echo "$WHAT" | cut -d '.' -f 1)
|
||||
# TWHAT=$(echo "$WHAT" | cut -d '.' -f 2)
|
||||
# cp ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${RWHAT}.${TWHAT}
|
||||
# cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${RWHAT}.${TWHAT}
|
||||
|
||||
## REPONSE ON PORT
|
||||
echo "$HTTPCORS" > ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${APPNAME}/${MOATS}.data.${WHAT} >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
|
@ -385,7 +426,8 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) & # testcraft SUB PROCESS
|
||||
|
||||
) & # testcraft & SUB PROCESS
|
||||
|
||||
end=`date +%s`
|
||||
echo "(☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
|
@ -398,133 +440,15 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
if [[ $APPNAME == "getipns" ]]; then
|
||||
echo "$HTTPCORS /ipns/${ASTRONAUTENS}"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
end=`date +%s`
|
||||
echo $APPNAME" (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
# DEFAULT (NO REDIRECT DONE YET) CHECK OFFICIAL GATEWAY
|
||||
##############################################
|
||||
TWIP=$(hostname)
|
||||
# OFFICIAL Gateway ( increase waiting time ) - MORE SECURE
|
||||
if [[ $APPNAME == "official" ]]; then
|
||||
|
||||
echo "SEARCHING FOR OFFICIAL TW GW... $LIBRA/ipns/${ASTRONAUTENS} ($YOU)"
|
||||
|
||||
## GETTING LAST TW via IPFS or HTTP GW
|
||||
[[ $YOU ]] && echo "ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/coucou/${MOATS}.astroindex.html
|
||||
[[ ! -s ~/.zen/tmp/coucou/${MOATS}.astroindex.html ]] && echo "$HOST/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/coucou/${MOATS}.astroindex.html "$HOST/ipns/${ASTRONAUTENS}"
|
||||
|
||||
# DEBUG
|
||||
# echo "tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'"
|
||||
# echo "cat ~/.zen/tmp/MadeInZion.json | jq -r .[].secret"
|
||||
|
||||
if [[ -s ~/.zen/tmp/coucou/${MOATS}.astroindex.html ]]; then
|
||||
echo "GOT TW CACHE !!"
|
||||
tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
[[ ! -s ~/.zen/tmp/MadeInZion.json ]] && (echo "$HTTPCORS SECRET ERROR - SORRY - CANNOT CONTINUE " | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "BAD SECRET (☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
SECRET=$(cat ~/.zen/tmp/MadeInZion.json | jq -r .[].secret)
|
||||
#
|
||||
# CRYPTO DECODING CRYPTIP -> myIP
|
||||
cat ~/.zen/tmp/MadeInZion.json | jq -r .[].secret | base16 -d > ~/.zen/tmp/myIP.$G1PUB.enc.2
|
||||
$MY_PATH/tools/natools.py decrypt -f pubsec -k ~/.zen/tmp/coucou/${MOATS}.secret.key -i ~/.zen/tmp/myIP.$G1PUB.enc.2 -o ~/.zen/tmp/myIP.$G1PUB > /dev/null 2>&1
|
||||
GWIP=$(cat ~/.zen/tmp/myIP.$G1PUB > /dev/null 2>&1)
|
||||
|
||||
[[ ! $GWIP ]] && GWIP=$HOST ## CLEAR
|
||||
#
|
||||
echo "TW is on $GWIP"
|
||||
|
||||
echo "WAS $GWIP ($TUBE) BECOMING TW GATEWAY : $myIP" ## BECOMING OFFICIAL BECOME R/W TW
|
||||
|
||||
####################
|
||||
echo $GWIP > ~/.zen/tmp/GWIP
|
||||
$MY_PATH/tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/tmp/GWIP -o $HOME/.zen/tmp/myIP.$G1PUB.enc
|
||||
CRYPTIP=$(cat ~/.zen/tmp/myIP.$G1PUB.enc | base16)
|
||||
## WRITE CRYPTIP into MadeInZion tiddler
|
||||
echo "# CRYPTO ENCODING $GWIP -> $CRYPTIP"
|
||||
sed -i "s~$SECRET~$CRYPTIP~g" ~/.zen/tmp/MadeInZion.json
|
||||
|
||||
###########################
|
||||
# Modification Tiddlers de contrôle de GW & API
|
||||
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://'$HOST':5001"}]' > ~/.zen/tmp/5001.json
|
||||
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://'$HOST':8080"}]' > ~/.zen/tmp/8080.json
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html \
|
||||
--import "$HOME/.zen/tmp/MadeInZion.json" "application/json" \
|
||||
--import "$HOME/.zen/tmp/5001.json" "application/json" \
|
||||
--import "$HOME/.zen/tmp/8080.json" "application/json" \
|
||||
--output ~/.zen/tmp/coucou --render "$:/core/save/all" "${MOATS}.newindex.html" "text/plain"
|
||||
|
||||
[[ -s ~/.zen/tmp/coucou/${MOATS}.newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/coucou/${MOATS}.newindex.html ~/.zen/tmp/coucou/${MOATS}.astroindex.html \
|
||||
&& rm ~/.zen/tmp/coucou/${MOATS}.newindex.html
|
||||
###########################
|
||||
|
||||
# GET PLAYER FROM Dessin de $PLAYER
|
||||
tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'MOA.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[moa]]'
|
||||
PLAYER=$(cat ~/.zen/tmp/MOA.json | jq -r .[].president | head -n 1) ## TRY WITH MULTI moa & G1Moa ?
|
||||
|
||||
[[ ! $PLAYER ]] \
|
||||
&& (echo "$HTTPCORS ERROR - BAD [tag[moa]] president field /ipns/${ASTRONAUTENS} - CONTINUE " | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "BAD MOA (☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
|
||||
if [[ "${PLAYER}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
echo "VALID PLAYER OK"
|
||||
else
|
||||
echo "BAD EMAIL"
|
||||
(echo "$HTTPCORS KO ${PLAYER} : IPNS key identification failed<br>please correct 'Dessin president field' with your email" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
fi
|
||||
|
||||
## CREATE $PLAYER IPNS KEY (for next 20h12)
|
||||
ipfs key rm ${PLAYER}
|
||||
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/tmp/coucou/${MOATS}.${G1PUB}.ipns.key
|
||||
[[ ! -d ~/.zen/game/players/$PLAYER/ipfs/moa ]] && mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa/
|
||||
cp ~/.zen/tmp/coucou/${MOATS}.astroindex.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
echo "## PUBLISHING ${PLAYER} /ipns/$ASTRONAUTENS/ &"
|
||||
(
|
||||
startipfs=`date +%s`
|
||||
IPUSH=$(ipfs add -Hq ~/.zen/tmp/coucou/${MOATS}.astroindex.html | tail -n 1)
|
||||
[[ $IPUSH ]] && ipfs name publish --key=${PLAYER} /ipfs/$IPUSH 2>/dev/null
|
||||
echo "## PUBLISHING ${PLAYER} /ipns/$ASTRONAUTENS/ END"
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:TWUPDATE:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) & # ~~bbbzzzzzz~~&
|
||||
|
||||
## MEMORISE PLAYER Ŋ1 ZONE (TODO compare with VISA.new.sh)
|
||||
echo "$PLAYER" > ~/.zen/game/players/$PLAYER/.player
|
||||
echo "$G1PUB" > ~/.zen/game/players/$PLAYER/.g1pub
|
||||
echo "${ASTRONAUTENS}" > ~/.zen/game/players/$PLAYER/.playerns
|
||||
GWIP=${myIP}
|
||||
TWIP=${myIP}
|
||||
echo "*********** OFFICIAL LOGIN GOES TO $TWIP"
|
||||
|
||||
else
|
||||
echo "NO TW FOUND - LAUNCHING CENTRAL"
|
||||
## 302 REDIRECT CENTRAL GW
|
||||
TWIP=${TUBE}
|
||||
fi
|
||||
|
||||
## 302 REDIRECT $TWIP
|
||||
cat ~/.zen/Astroport.ONE/templates/index.302 >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
sed -i "s~_TWLINK_~http://$TWIP:8080/ipns/${ASTRONAUTENS}~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
|
||||
continue
|
||||
fi ## official
|
||||
|
||||
|
||||
###################################################################################################
|
||||
###################################################################################################
|
||||
# API ONE : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email/elastic=ELASTICID&pseudo=PROFILENAME
|
||||
if [[ (${arr[6]} == "email" || ${arr[6]} == "elastic") && ${arr[7]} != "" ]]; then
|
||||
# API ONE : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email=EMAIL&pseudo=PROFILENAME
|
||||
if [[ ${arr[6]} == "email" && ${arr[7]} != "" ]]; then
|
||||
|
||||
[[ $APPNAME != "g1pub" ]] && (echo "$HTTPCORS ERROR - BAD COMMAND $APPNAME" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
|
||||
|
@ -532,49 +456,50 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
|
||||
SALT=$(urldecode ${arr[1]} | xargs)
|
||||
PEPPER=$(urldecode ${arr[3]} | xargs)
|
||||
WHAT=$(urldecode ${arr[7]} | xargs)
|
||||
# WHAT can contain urlencoded FullURL
|
||||
EMAIL=$(urldecode ${arr[7]} | xargs)
|
||||
PSEUDO=$(urldecode ${arr[9]} | xargs)
|
||||
|
||||
[[ ! ${WHAT} ]] && (echo "$HTTPCORS ERROR - MISSING ${WHAT} FOR ${WHAT} CONTACT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
[[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR ${WHAT} CONTACT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
|
||||
if [[ "${WHAT}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
echo "VALID EMAIL OK"
|
||||
else
|
||||
echo "BAD EMAIL"
|
||||
(echo "$HTTPCORS KO ${WHAT} : bad '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
fi
|
||||
## CHECK WHAT IS EMAIL
|
||||
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
echo "VALID EMAIL OK"
|
||||
else
|
||||
echo "BAD EMAIL"
|
||||
(echo "$HTTPCORS KO ${EMAIL} : bad '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
|
||||
fi
|
||||
|
||||
## CREATE PSEUDO FROM
|
||||
if [[ ! $PSEUDO ]]; then
|
||||
PSEUDO=$(echo ${WHAT} | cut -d '@' -f 1)
|
||||
PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1)
|
||||
PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:3}
|
||||
fi
|
||||
# PASS CRYPTING KEY
|
||||
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
|
||||
|
||||
echo "$SALT / $PEPPER ($PASS)"
|
||||
|
||||
if [[ ! -d ~/.zen/game/players/${WHAT} ]]; then
|
||||
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${WHAT}.${MOATS}.txt)"
|
||||
if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then
|
||||
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)"
|
||||
(
|
||||
startvisa=`date +%s`
|
||||
$MY_PATH/tools/VISA.new.sh "$SALT" "$PEPPER" "${WHAT}" "$PSEUDO" > ~/.zen/tmp/email.${WHAT}.${MOATS}.txt
|
||||
$MY_PATH/tools/mailjet.sh "${WHAT}" ~/.zen/tmp/email.${WHAT}.${MOATS}.txt
|
||||
echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
$MY_PATH/tools/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
$MY_PATH/tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt ## Send VISA.new log to EMAIL
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $startvisa`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:VISA:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
) &
|
||||
|
||||
echo "$HTTPCORS - <meta http-equiv='refresh' content='3; url=\"http://"$myIP":8080/ipns/"$ASTRONAUTENS"\"'/>
|
||||
<h1>BOOTING - ASTRONAUT $PSEUDO </h1> IPFS FORMATING - [$SALT + $PEPPER] (${WHAT})
|
||||
<br>- TW - http://$myIP:8080/ipns/$ASTRONAUTENS <br> - GW - /ipns/$IPFSNODEID" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
echo "(☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
echo "$HTTPCORS - <meta http-equiv='refresh' content='3; url=\"http://"${myHOST}":8080/ipns/"$ASTRONAUTENS"\"'/>
|
||||
<h1>BOOTING - ASTRONAUT $PSEUDO </h1> IPFS FORMATING - [$SALT + $PEPPER] (${EMAIL})
|
||||
<br>- TW - http://${myHOST}:8080/ipns/$ASTRONAUTENS <br> - GW - /ipns/$IPFSNODEID" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
continue
|
||||
else
|
||||
# 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")
|
||||
[[ ! $CHECK ]] && (echo "$HTTPCORS ERROR - ${WHAT} ${WHAT} ALREADY EXISTS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
# ASTRONAUT EXISTING ${EMAIL}
|
||||
CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$SALT")
|
||||
[[ $CHECK ]] && CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$PEPPER")
|
||||
[[ ! $CHECK ]] && (echo "$HTTPCORS - WARNING - PLAYER ${EMAIL} ALREADY HERE" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && continue
|
||||
fi
|
||||
|
||||
###################################################################################################
|
||||
|
@ -584,18 +509,26 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
fi
|
||||
|
||||
|
||||
##############################################
|
||||
# VIDEOURL : ADD URL TO 'CopierYoutube' tagged Tiddler : TODO
|
||||
##############################################
|
||||
if [[ $APPNAME == "CopierYoutube" ]]; then
|
||||
echo "$HTTPCORS /ipns/${ASTRONAUTENS} ADDING ${WHAT}"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
end=`date +%s`
|
||||
echo $APPNAME "(☉_☉ ) ${WHAT} Execution time was "`expr $end - $start` seconds.
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
## RESPONDING
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/coucou/${MOATS}.official.swallow &
|
||||
echo "HTTP 1.1 PROTOCOL DOCUMENT READY"
|
||||
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect
|
||||
echo "${MOATS} -----> PAGE AVAILABLE -----> http://$myIP:${PORT}"
|
||||
echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"
|
||||
|
||||
#echo "${ASTRONAUTENS}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
## CHECK IF ALREADY EXISTING ${WHAT}
|
||||
# IF NOT = BATCH CREATE TW
|
||||
end=`date +%s`
|
||||
echo $type" (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
|
||||
echo $type" (J‿‿J) Execution time was "`expr $end - $start` seconds.
|
||||
|
||||
|
||||
|
||||
fi ## END IF SALT
|
||||
|
||||
|
@ -630,14 +563,14 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
|||
"title": "'${MOATS}'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"text": "'$(urldecode $wsource)'",
|
||||
"tags": "'CopierYoutube ${${WHAT}}'"
|
||||
"tags": "'CopierYoutube ${WHAT}'"
|
||||
}
|
||||
]
|
||||
' > ~/.zen/tmp/${${WHAT}}.${MOATS}.import.json
|
||||
' > ~/.zen/tmp/${WHAT}.${MOATS}.import.json
|
||||
|
||||
## TODO ASTROBOT "G1AstroAPI" READS ~/.zen/tmp/${${WHAT}}.${MOATS}.import.json
|
||||
## TODO ASTROBOT "G1AstroAPI" READS ~/.zen/tmp/${WHAT}.${MOATS}.import.json
|
||||
|
||||
(echo "$HTTPCORS 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
|
||||
(echo "$HTTPCORS 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
|
||||
fi
|
||||
|
||||
fi
|
||||
|
|
|
@ -7,7 +7,7 @@ MY_PATH="`dirname \"$0\"`" # relative
|
|||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
start=`date +%s`
|
||||
echo "20H12 (♥‿‿♥) $(hostname)"
|
||||
echo "20H12 (♥‿‿♥) $(hostname) $(date)"
|
||||
espeak "Ding" > /dev/null 2>&1
|
||||
|
||||
|
||||
|
@ -35,7 +35,9 @@ git pull
|
|||
|
||||
## CLOSING 1234 API PORT
|
||||
killall 12345.sh
|
||||
killall _12345.sh
|
||||
killall nc
|
||||
killall tail
|
||||
|
||||
espeak "Ding Ding Ding" > /dev/null 2>&1
|
||||
|
||||
|
@ -45,7 +47,7 @@ espeak "Ding Ding Ding" > /dev/null 2>&1
|
|||
espeak "Bills Kills Bills" > /dev/null 2>&1
|
||||
|
||||
|
||||
## OPEN ENTRANCE AGAIN
|
||||
## OPEN API ENGINE
|
||||
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
|
||||
|
||||
if [[ ! $isLAN ]]; then
|
||||
|
@ -58,12 +60,15 @@ if [[ ! $isLAN ]]; then
|
|||
done
|
||||
fi
|
||||
|
||||
## Updating yt-dlp
|
||||
sudo youtube-dl -U
|
||||
|
||||
########################################################################
|
||||
end=`date +%s`
|
||||
echo "20H12 (♥‿‿♥) Execution time was "`expr $end - $start` seconds.
|
||||
|
||||
## MAIL LOG : support@qo-op.com
|
||||
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log.txt"
|
||||
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log"
|
||||
|
||||
espeak "Byte Storm Over" > /dev/null 2>&1
|
||||
|
||||
|
|
|
@ -13,66 +13,95 @@ echo "$ME RUNNING"
|
|||
# Download video, add to ipfs and import new tiddler
|
||||
# Publish !!
|
||||
|
||||
## TODO USE API 1234 & new_file_in_astroport.sh FOR TW
|
||||
|
||||
# ASTROBOT FIRST PROCESS
|
||||
# "Copier youtube" + (voeu) => CopierYoutube (G1Voeu G1CopierYoutube) = ASTROBOT copy Ŋ1 "(G1CopierYoutube)"
|
||||
|
||||
# IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||
|
||||
INDEX="$1"
|
||||
[[ ! $INDEX ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -f $INDEX ]] && echo "ERROR - Fichier TW absent. $INDEX" && exit 1
|
||||
[[ ! ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -f ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
|
||||
WISHKEY="$2" ## IPNS KEY NAME - G1PUB - PLAYER ...
|
||||
WISHKEY="$2" ## IPNS KEY NAME - G1PUB - PLAYER - WISHKEY...
|
||||
[[ ! $WISHKEY ]] && echo "ERROR - Please provide IPFS publish key" && exit 1
|
||||
TWNS=$(ipfs key list -l | grep -w $WISHKEY | cut -d ' ' -f1)
|
||||
[[ ! $TWNS ]] && echo "ERROR - Clef IPNS $WISHKEY introuvable!" && exit 1
|
||||
|
||||
# Extract tag=tube from TW into ~/.zen/tmp/$WISHKEY/CopierYoutube.json
|
||||
# Extract tag=tube from TW
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/$WISHKEY
|
||||
mkdir -p ~/.zen/tmp/$IPFSNODEID
|
||||
|
||||
###################################################################
|
||||
## TODO BOUCLER SUR LES INDEX des G1Astronautes G1Ami
|
||||
## tag[CopierYoutube] EXTRACT ~/.zen/tmp/CopierYoutube.json FROM TW
|
||||
###################################################################
|
||||
rm -f ~/.zen/tmp/$WISHKEY/CopierYoutube.json
|
||||
rm -f ~/.zen/tmp/CopierYoutube.json
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/tmp/$WISHKEY \
|
||||
--output ~/.zen/tmp \
|
||||
--render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]'
|
||||
|
||||
echo "cat ~/.zen/tmp/$WISHKEY/CopierYoutube.json"
|
||||
echo "DEBUG : cat ~/.zen/tmp/CopierYoutube.json | jq -r"
|
||||
|
||||
###################################################################
|
||||
## TEXT TREATMENT
|
||||
## URL EXTRACTION & TREATMENT
|
||||
## For this TAG, specific extract URL from text field and copy all video from links into tid.json
|
||||
for YURL in $(cat ~/.zen/tmp/$WISHKEY/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do
|
||||
for YURL in $(cat ~/.zen/tmp/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do
|
||||
echo "Detected $YURL"
|
||||
echo "Extracting video playlist"
|
||||
|
||||
### GETTING ALL VIDEO IDs (for playlist copy)
|
||||
yt-dlp --print "%(id)s" "${YURL}" >> ~/.zen/tmp/$WISHKEY/ytids.$MOATS
|
||||
### yt-dlp.command
|
||||
[[ ! $(cat ~/.zen/tmp/$IPFSNODEID/yt-dlp.command 2>/dev/null | grep "$YURL") ]] \
|
||||
&& echo "$WISHKEY&$YURL" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.command
|
||||
|
||||
yt-dlp --print "%(id)s&%(webpage_url)s" "${YURL}" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY
|
||||
|
||||
done # FINISH YURL loop
|
||||
|
||||
echo "cat ~/.zen/tmp/$WISHKEY/ytids.$MOATS"
|
||||
## SORT UNIQ CACHE
|
||||
cat ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY | sort | uniq > ~/.zen/tmp/yt-dlp.cache
|
||||
cp ~/.zen/tmp/yt-dlp.cache ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY
|
||||
|
||||
###################################################################
|
||||
[[ ! -s ~/.zen/tmp/$WISHKEY/ytids.$MOATS ]] && echo "AUCUN YOUTUBEID pour CopierYoutube" && exit 0
|
||||
[[ ! -s ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY ]] && echo "AUCUN YOUTUBEID pour CopierYoutube" && exit 0
|
||||
###################################################################
|
||||
|
||||
###################################################################
|
||||
# PROCESS YOUTUBEID VIDEO DOWNLOAD AND CREATE TIDDLER in TW
|
||||
###################################################################
|
||||
while read YID;
|
||||
while read LINE;
|
||||
do
|
||||
|
||||
[[ -f ~/.zen/tmp/$WISHKEY/$YID.TW.json ]] && echo "Tiddler json already existing : ~/.zen/tmp/$WISHKEY/$YID.TW.json" && continue
|
||||
YID=$(echo "$LINE" | cut -d '&' -f 1)
|
||||
|
||||
# SINGLE VIDEO YURL
|
||||
ZYURL="https://www.youtube.com/watch?v=$YID";
|
||||
echo "YOUTUBE : $ZYURL"
|
||||
###################################################################
|
||||
## Search for $YID.TW.json TIDDLER in local & MySwarm cache
|
||||
MATCH=$(ls -t ~/.zen/tmp/$IPFSNODEID/G1CopierYoutube/*/$YID.TW.json 2>/dev/null | head -n 1)
|
||||
[[ $MATCH ]] \
|
||||
&& TIDDLER="$MATCH" \
|
||||
|| MATCH=$(ls -t ~/.zen/tmp/swarm/*/G1CopierYoutube/*/$YID.TW.json 2>/dev/null | head -n 1)
|
||||
|
||||
[[ $MATCH ]] \
|
||||
&& TIDDLER="$MATCH"
|
||||
###################################################################
|
||||
|
||||
###################################################################
|
||||
## CREATE APP PUBLICATION
|
||||
###################################################################
|
||||
mkdir -p $HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/
|
||||
|
||||
|
||||
if [[ ! ${TIDDLER} ]]; then
|
||||
###################################################################
|
||||
# COPY VIDEO AND MAKE TIDDLER
|
||||
###################################################################
|
||||
|
||||
ZYURL=$(echo "$LINE" | cut -d '&' -f 2-)
|
||||
echo "COPIE : $ZYURL"
|
||||
|
||||
TITLE="$(yt-dlp --print "%(title)s" "${ZYURL}")"
|
||||
TITLE=${TITLE//[^A-zÀ-ÿ0-9 ]/}
|
||||
[[ ! $TITLE ]] && continue
|
||||
[[ ! $TITLE ]] && echo "NO TITLE" && continue
|
||||
|
||||
echo ".... Downloading $TITLE.mp4"
|
||||
|
||||
|
@ -80,14 +109,18 @@ while read YID;
|
|||
# SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
|
||||
# (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba)
|
||||
# TODO : DELAY COPY OPERATION... Astro can download quicker at 03:00 AM
|
||||
echo "yt-dlp -f \"(bv*[ext=mp4][height<=720]+ba/b[height<=720])\" --no-mtime --embed-thumbnail --add-metadata -o \"$HOME/.zen/tmp/$WISHKEY/$TITLE.%(ext)s\" ${ZYURL}"
|
||||
echo "yt-dlp -f \"(bv*[ext=mp4][height<=720]+ba/b[height<=720])\" --no-mtime --embed-thumbnail --add-metadata -o \"$HOME/.zen/tmp/yt-dlp/$TITLE.%(ext)s\" ${ZYURL}"
|
||||
|
||||
#############################################################################
|
||||
## COPY FROM YOUTUBE (TODO DOUBLE COPY & MKV to MP4 OPTIMISATION)
|
||||
## EXTRA PARAM TO TRY
|
||||
# --cookies-from-browser browser (xdg-settings get default-web-browser) allow member copies
|
||||
# --dateafter DATE --download-archive myarchive.txt
|
||||
yt-dlp -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
|
||||
--download-archive $HOME/.zen/.yt-dlp.list \
|
||||
-S "filesize:700M" --no-mtime --embed-thumbnail --add-metadata \
|
||||
--write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs \
|
||||
-o "$HOME/.zen/tmp/$WISHKEY/$TITLE.%(ext)s" ${ZYURL}
|
||||
-o "$HOME/.zen/tmp/yt-dlp/$TITLE.%(ext)s" ${ZYURL}
|
||||
################################################################################
|
||||
### ADAPT TO TW RYTHM (DELAY COPY?)
|
||||
echo
|
||||
|
@ -96,21 +129,37 @@ while read YID;
|
|||
|
||||
############################################################################
|
||||
### CHECK RESULT CONVERT MKV TO MP4
|
||||
[[ ! -f "$HOME/.zen/tmp/$WISHKEY/$ZFILE" ]] && ffmpeg -loglevel quiet -i "$HOME/.zen/tmp/$WISHKEY/$TITLE.mkv" -c:v libx264 -c:a aac "$HOME/.zen/tmp/$WISHKEY/$TITLE.mp4" # TRY TO CONVERT MKV TO MP4
|
||||
[[ ! -f "$HOME/.zen/tmp/$WISHKEY/$ZFILE" ]] && echo "No FILE -- CONTINUE --" && continue
|
||||
[[ ! -f "$HOME/.zen/tmp/yt-dlp/$ZFILE" ]] && ffmpeg -loglevel quiet -i "$HOME/.zen/tmp/yt-dlp/$TITLE.mkv" -c:v libx264 -c:a aac "$HOME/.zen/tmp/yt-dlp/$TITLE.mp4" # TRY TO CONVERT MKV TO MP4
|
||||
[[ ! -f "$HOME/.zen/tmp/yt-dlp/$ZFILE" ]] && echo "No FILE -- CONTINUE --" && continue
|
||||
echo
|
||||
|
||||
####################################################
|
||||
echo "FOUND : ~/.zen/tmp/$WISHKEY/$ZFILE"
|
||||
FILE_BSIZE=$(du -b "$HOME/.zen/tmp/$WISHKEY/$ZFILE" | awk '{print $1}')
|
||||
echo "FOUND : ~/.zen/tmp/yt-dlp/$ZFILE"
|
||||
FILE_BSIZE=$(du -b "$HOME/.zen/tmp/yt-dlp/$ZFILE" | awk '{print $1}')
|
||||
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||
echo "FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)"
|
||||
|
||||
#~ ## PREPARE FOR new_file_in_astroport.sh
|
||||
#~ mkdir -p "$HOME/Astroport/youtube/$YID"
|
||||
#~ REVSOURCE="$(echo "$ZYURL" | awk -F/ '{print $3}' | rev)_"
|
||||
#~ MEDIAID="$REVSOURCE${YID}"
|
||||
#~ URLENCODE_FILE_NAME=$(echo ${ZFILE} | jq -Rr @uri)
|
||||
#~ echo "youtube;${MEDIAID};$(date -u +%s%N | cut -b1-13);${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/Astroport/youtube/$YID/ajouter_video.txt
|
||||
#~ mv "$HOME/.zen/tmp/yt-dlp/$ZFILE" "$HOME/Astroport/youtube/$YID/"
|
||||
###
|
||||
#~ ${MY_PATH}/../tools/new_file_in_astroport.sh "$HOME/Astroport/youtube/$YID" "${ZFILE}" "$G1PUB"
|
||||
path="$HOME/.zen/tmp/yt-dlp"
|
||||
file="$ZFILE"
|
||||
$(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "$path" "$file" | tail -n 1) ## export ANIMH
|
||||
echo "/ipfs/$ANIMH"
|
||||
## Create gifanime ## TODO Search for similarities BEFORE ADD
|
||||
|
||||
|
||||
echo "Adding to IPFS"
|
||||
ILINK=$(ipfs add -q "$HOME/.zen/tmp/$WISHKEY/$ZFILE" | tail -n 1)
|
||||
ILINK=$(ipfs add -q "$HOME/.zen/tmp/yt-dlp/$ZFILE" | tail -n 1)
|
||||
echo "/ipfs/$ILINK <=> $ZFILE"
|
||||
|
||||
MIME=$(file --mime-type -b "$HOME/.zen/tmp/$WISHKEY/$ZFILE")
|
||||
MIME=$(file --mime-type -b "$HOME/.zen/tmp/yt-dlp/$ZFILE")
|
||||
|
||||
## ADD TAGS
|
||||
SEC=$(yt-dlp --print "%(duration)s" "${ZYURL}")
|
||||
|
@ -118,7 +167,7 @@ while read YID;
|
|||
PLAYLIST=$(yt-dlp --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
|
||||
EXTRATAG="$CHANNEL $PLAYLIST"
|
||||
## PREPARE VIDEO HTML5 CODE
|
||||
TEXT="<video controls width=100%><source src='/ipfs/"${ILINK}"' type='"${MIME}"'></video><h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>"
|
||||
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'><source src='/ipfs/"${ILINK}"' type='"${MIME}"'></video><br>{{!!duree}}<br><h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>"
|
||||
|
||||
echo "Creating Youtube ${YID} tiddler : G1CopierYoutube !"
|
||||
echo $TEXT
|
||||
|
@ -126,11 +175,16 @@ while read YID;
|
|||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"resolution": "'${RES}'",
|
||||
"duree": "'${DUREE}'",
|
||||
"duration": "'${DURATION}'",
|
||||
"giftime": "'${PROBETIME}'",
|
||||
"gifanime": "'/ipfs/${ANIMH}'",
|
||||
"modified": "'${MOATS}'",
|
||||
"title": "'$ZFILE'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"text": "'$TEXT'",
|
||||
"mime": "'$MIME'",
|
||||
"mime": "'${MIME}'",
|
||||
"size": "'${FILE_BSIZE}'",
|
||||
"sec": "'${SEC}'",
|
||||
"ipfs": "'/ipfs/${ILINK}'",
|
||||
|
@ -138,7 +192,16 @@ while read YID;
|
|||
"tags": "'ipfs G1CopierYoutube ${WISHKEY} ${EXTRATAG} ${MIME}'"
|
||||
}
|
||||
]
|
||||
' > "$HOME/.zen/tmp/$WISHKEY/$YID.TW.json"
|
||||
' > "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json"
|
||||
|
||||
else
|
||||
###################################################################
|
||||
# TIDDLER WAS IN CACHE
|
||||
###################################################################
|
||||
|
||||
cp "${TIDDLER}" "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
#################################################################
|
||||
|
@ -147,22 +210,23 @@ while read YID;
|
|||
echo "=========================="
|
||||
echo "Adding $YID tiddler to TW /ipns/$TWNS "
|
||||
|
||||
rm -f ~/.zen/tmp/$WISHKEY/newindex.html
|
||||
rm -f ~/.zen/tmp/$IPFSNODEID/newindex.html
|
||||
|
||||
echo ">>> Importing $HOME/.zen/tmp/$WISHKEY/$YID.TW.json"
|
||||
echo ">>> Importing $HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json"
|
||||
|
||||
tiddlywiki --load $INDEX \
|
||||
--import "$HOME/.zen/tmp/$WISHKEY/$YID.TW.json" "application/json" \
|
||||
--deletetiddlers '[tag[CopierYoutube]]' \
|
||||
--output ~/.zen/tmp/$WISHKEY --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json" "application/json" \
|
||||
--output ~/.zen/tmp/$IPFSNODEID --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
if [[ -s ~/.zen/tmp/$WISHKEY/newindex.html ]]; then
|
||||
echo "$$$ Mise à jour $INDEX"
|
||||
cp ~/.zen/tmp/$WISHKEY/newindex.html $INDEX
|
||||
# --deletetiddlers '[tag[CopierYoutube]]' ### REFRESH CHANNEL COPY
|
||||
|
||||
if [[ -s ~/.zen/tmp/$IPFSNODEID/newindex.html ]]; then
|
||||
echo "$$$ Mise à jour ${INDEX}"
|
||||
cp ~/.zen/tmp/$IPFSNODEID/newindex.html ${INDEX}
|
||||
else
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/$WISHKEY/newindex.html"
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/$IPFSNODEID/newindex.html"
|
||||
echo "XXXXXXXXXXXXXXXXXXXXXXX"
|
||||
fi
|
||||
|
||||
done < ~/.zen/tmp/$WISHKEY/ytids.$MOATS # FINISH YID loop 1
|
||||
done < ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY # FINISH YID loop 1
|
||||
exit 0
|
||||
|
|
|
@ -76,14 +76,8 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
## A la fois Titre du tag et Pepper construction de clef
|
||||
echo $PEPPER > ~/.zen/game/world/$WISHKEY/.pepper
|
||||
|
||||
echo "# CREATION TW"
|
||||
echo "# INIT WISH TW"
|
||||
##########################################################################################
|
||||
# ipfs key import _MEDIAKEY_ ~/.zen/Astroport.ONE/templates/_MEDIAKEY_.keystore.key
|
||||
##############
|
||||
#
|
||||
# ipfs cat /ipfs/bafybeibqdoegifzejykmc3qw3e3drgsa5i7az6xwjlfcx7rbtcoj5unpkq > ~/.zen/Astroport.ONE/templates/twdefault.html
|
||||
# INTRODUCE HIDING CONTROL (read only from https) https $:/tags/Stylesheet
|
||||
# ipfs cat /ipfs/bafybeidkur2tfbmqwscgmkfh76vmbcqay2m4gznxv5emkenxeffmrgywky > ~/.zen/Astroport.ONE/templates/twdefault.html
|
||||
##########################################################################################
|
||||
cp ~/.zen/Astroport.ONE/templates/twdefault.html ~/.zen/game/world/$WISHKEY/index.html
|
||||
# TODO : CREATE ONE TEMPLATE / REMOVE USELESS TID
|
||||
|
@ -96,7 +90,7 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
sed -i "s~_WISHKEY_~${WISHKEY}~g" ~/.zen/game/world/$WISHKEY/index.html
|
||||
sed -i "s~_NUMBER_~${SALT}~g" ~/.zen/game/world/$WISHKEY/index.html
|
||||
sed -i "s~_SECRET_~${PEPPER}~g" ~/.zen/game/world/$WISHKEY/index.html
|
||||
sed -i "s~_ASTROPORT_~${ASTRONAUTENS}~g" ~/.zen/game/world/$WISHKEY/index.html
|
||||
sed -i "s~_ASTROPORT_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/world/$WISHKEY/index.html
|
||||
sed -i "s~_QRSEC_~${myIP}~g" ~/.zen/game/world/$WISHKEY/index.html
|
||||
|
||||
# IPNS KEY is WISHKEY / VOEUNS
|
||||
|
@ -116,6 +110,9 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
--import ~/.zen/Astroport.ONE/templates/data/local.api.json "application/json" \
|
||||
--import ~/.zen/Astroport.ONE/templates/data/local.gw.json "application/json" \
|
||||
--deletetiddlers '"Dessin de _PLAYER_"' \
|
||||
--deletetiddlers '"BunkerBOX"' \
|
||||
--deletetiddlers '"CopierYoutube"' \
|
||||
--deletetiddlers '"Bienvenue"' \
|
||||
--output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
[[ -s ~/.zen/tmp/newindex.html ]] && cp ~/.zen/tmp/newindex.html ~/.zen/game/world/$WISHKEY/index.html
|
||||
|
@ -124,7 +121,6 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
echo "# CREATION QR CODE"
|
||||
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
LIBRA="http://qo-op.com:8080"
|
||||
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/$WISHKEY/QR.WISHLINK.png" "$LIBRA/ipns/$VOEUNS"
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/$WISHKEY/QR.ASTROLINK.png" "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
|
@ -145,7 +141,7 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
|
||||
composite -compose Over -gravity NorthWest -geometry +350+10 ~/.zen/tmp/ASTROLOGO.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/astroport.png
|
||||
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/QRWISHLINK.png ~/.zen/tmp/astroport.png ~/.zen/tmp/one.png
|
||||
convert -gravity northwest -pointsize 35 -fill black -draw "text 320,250 \"$PLAYER\"" ~/.zen/tmp/one.png ~/.zen/tmp/hop.png
|
||||
convert -gravity northwest -pointsize 20 -fill black -draw "text 320,250 \"$PLAYER\"" ~/.zen/tmp/one.png ~/.zen/tmp/hop.png
|
||||
convert -gravity northwest -pointsize 30 -fill black -draw "text 20,320 \"$PEPPER\"" ~/.zen/tmp/hop.png ~/.zen/tmp/pseudo.png
|
||||
convert -gravity northwest -pointsize 30 -fill black -draw "text 320,300 \"$SALT\"" ~/.zen/tmp/pseudo.png ~/.zen/tmp/salt.png
|
||||
convert -gravity northwest -pointsize 33 -fill black -draw "text 320,350 \"$PEPPER\"" ~/.zen/tmp/salt.png ~/.zen/tmp/player.png
|
||||
|
|
|
@ -16,14 +16,14 @@ IPFSNODEID=$(ipfs id -f='<id>\n')
|
|||
|
||||
## RUNING FOR ALL LOCAL PLAYERS
|
||||
for PLAYER in $(ls -t ~/.zen/game/players/); do
|
||||
[[ $PLAYER == '.toctoc' ]] && echo ".toctoc users " && continue
|
||||
[[ $PLAYER == "user" || $PLAYER == "zen" ]] && continue
|
||||
echo "##################################################################"
|
||||
echo ">>>>> PLAYER : $PLAYER >>>>>>>>>>>>> REFRESHING TW STATION"
|
||||
echo "##################################################################"
|
||||
# Get PLAYER wallet amount
|
||||
COINS=$($MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/$PLAYER/secret.dunikey balance)
|
||||
echo "+++ WALLET BALANCE _ $COINS (G1) _"
|
||||
## DROP IF WALLET IS EMPTY : TODO
|
||||
#~ ## IF WALLET IS EMPTY : WHAT TODO ?
|
||||
echo "##################################################################"
|
||||
echo "##################################################################"
|
||||
echo "################### REFRESH ASTRONAUTE TW ###########################"
|
||||
|
@ -38,10 +38,10 @@ for PLAYER in $(ls -t ~/.zen/game/players/); do
|
|||
[[ ! $ASTRONAUTENS ]] && echo "WARNING No $PLAYER in keystore --" && ASTRONAUTENS=$ASTRONS
|
||||
|
||||
## VISA EMITER STATION MUST ACT ONLY
|
||||
[[ ! -f ~/.zen/game/players/$PLAYER/enc.secret.dunikey ]] && echo "$PLAYER IPNS KEY NOT MINE CONTINUE -- " \
|
||||
[[ ! -f ~/.zen/game/players/$PLAYER/secret.dunikey ]] && echo "$PLAYER secret.dunikey NOT HERE CONTINUE -- " \
|
||||
&& mv ~/.zen/game/players/$PLAYER ~/.zen/game/players/.$PLAYER && continue
|
||||
|
||||
## MY PLAYER.
|
||||
## MY PLAYER
|
||||
ipfs key export $G1PUB -o ~/.zen/tmp/$PLAYER.key
|
||||
ipfs key import $PLAYER ~/.zen/tmp/$PLAYER.key
|
||||
rm -f ~/.zen/tmp/$PLAYER.key
|
||||
|
@ -57,8 +57,7 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
echo "Getting latest online TW..."
|
||||
YOU=$(ipfs swarm peers >/dev/null 2>&1 && echo "$USER" || ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
echo "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
echo "http://$myIP:8080/ipns/$ASTRONAUTENS ($YOU)"
|
||||
echo "($YOU) /ipns/$ASTRONAUTENS $LIBRA"
|
||||
[[ $YOU ]] && ipfs --timeout 30s cat /ipns/$ASTRONAUTENS > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html \
|
||||
|| curl -m 30 -so ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
|
||||
|
@ -71,8 +70,8 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
echo "MANUAL PROCEDURE NEEDED"
|
||||
echo "------------------------------------------------"
|
||||
echo "http://$myIP:8080/ipfs/"
|
||||
cat ~/.zen/game/players/$PLAYER/ipfs/moa/.chain.*
|
||||
echo "ipfs name publish -t 24h --key=$PLAYER /ipfs/"
|
||||
echo "/ipfs/"$(cat ~/.zen/game/players/$PLAYER/ipfs/moa/.chain.* | tail -n 1)
|
||||
echo "ipfs name publish -t 24h --key=$PLAYER ..."
|
||||
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
|
||||
continue
|
||||
|
@ -120,13 +119,12 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
##############################################################
|
||||
## SPECIAL TAG "voeu" => Creation G1Voeu (G1Titre) makes AstroBot TW G1Processing
|
||||
##############################################################
|
||||
$MY_PATH/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html $PLAYER
|
||||
|
||||
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$PLAYER"
|
||||
# VOEUX.refresh.sh
|
||||
##############################################################
|
||||
## RUN ASTROBOT G1Voeux SUBPROCESS (SPECIFIC AND STANDARD Ŋ1 SYNC)
|
||||
## RUN ASTROBOT G1Voeux SUBPROCESS (SPECIFIC Ŋ1 COPY)
|
||||
##############################################################
|
||||
$MY_PATH/VOEUX.refresh.sh ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html $PLAYER
|
||||
${MY_PATH}/VOEUX.refresh.sh ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$PLAYER"
|
||||
##############################################################
|
||||
|
||||
####################
|
||||
|
@ -143,8 +141,8 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
|
|||
|
||||
###########################
|
||||
# Modification Tiddlers de contrôle de GW & API
|
||||
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http:/ipfs.localhost:5001"}]' > ~/.zen/tmp/5001.json
|
||||
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://'$TUBE':8080"}]' > ~/.zen/tmp/8080.json
|
||||
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://ipfs.localhost:5001"}]' > ~/.zen/tmp/5001.json
|
||||
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"https://ipfs.copylaradio.com"}]' > ~/.zen/tmp/8080.json
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html \
|
||||
--import "$HOME/.zen/tmp/MadeInZion.json" "application/json" \
|
||||
|
@ -203,7 +201,7 @@ ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/
|
|||
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
|
||||
[[ $BSIZE != $NSIZE ]] \
|
||||
&& ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
||||
&& ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
||||
&& echo "BALISE STATION /ipns/${IPFSNODEID} INDEXES = $NSIZE octets" \
|
||||
&& ipfs name publish --allow-offline -t 24h /ipfs/$ROUTING
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP) - DO NOT EDIT MANUALY -
|
||||
# http://tube.copylaradio.com:8080 ipfs.copylaradio.com
|
||||
# https://ipfs.copylaradio.com ipfs.copylaradio.com
|
||||
#################################################################
|
||||
# libra.astroport.com
|
||||
# astroport.libra.copylaradio.com
|
||||
/ip4/149.102.158.67/udp/4001/quic/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u
|
||||
# cancer.astroport.com
|
||||
/ip4/185.202.238.69/tcp/4001/p2p/12D3KooWSnxRBuoeCZGdXBbSKiW8qM4HxLp3RLypW9dg82o41ZqM
|
||||
# aries.copylaradio.com
|
||||
# astroport.cancer.copylaradio.com
|
||||
/ip4/185.202.238.69/tcp/4001/p2p/12D3KooWDYpPdfCFf3CbKpcLNmyA2vmJs4JY55k8yje9R1MxSgdB
|
||||
# astroport.aries.copylaradio.com
|
||||
/ip4/37.187.127.175/tcp/4001/p2p/12D3KooWSQYTxeoZZ39SNosEKxi7RUdGTtAQAqpKeZJxjzqqrZTx
|
||||
|
||||
#################################################################
|
||||
|
|
22
Makefile
22
Makefile
|
@ -9,6 +9,28 @@ SHELL_FILES ?= $(wildcard .*/*.sh */*.sh */*/*.sh)
|
|||
|
||||
all: install tests
|
||||
|
||||
install: upgrade build myos-host up player
|
||||
|
||||
upgrade: migrate-ipfs migrate-zen
|
||||
echo "Welcome to myos docker land - make a user - make a player -"
|
||||
|
||||
migrate-%:
|
||||
[ ! -f /var/lib/docker/volumes/$(HOSTNAME)_$*/_data ] \
|
||||
&& $(RUN) $(SUDO) mkdir -p /var/lib/docker/volumes/$(HOSTNAME)_$*/_data \
|
||||
&& $(RUN) $(SUDO) cp -a ~/.$* /var/lib/docker/volumes/$(HOSTNAME)_$*/_data \
|
||||
&& $(RUN) $(SUDO) chown -R $(USER) /var/lib/docker/volumes/$(HOSTNAME)_$* \
|
||||
|| :
|
||||
|
||||
player: STACK := User
|
||||
player: docker-network-create-$(USER)
|
||||
$(call make,stack-User-$(if $(DELETE),down,up),$(MYOS),COMPOSE_PROJECT_NAME MAIL)
|
||||
|
||||
player-%: STACK := User
|
||||
player-%:
|
||||
$(if $(filter $*,$(filter-out %-%,$(patsubst docker-compose-%,%,$(filter docker-compose-%,$(MAKE_TARGETS))))), \
|
||||
$(call make,stack-User-$*,$(MYOS),COMPOSE_PROJECT_NAME MAIL) \
|
||||
)
|
||||
|
||||
tests: shellcheck
|
||||
|
||||
shellcheck:
|
||||
|
|
44
README.md
44
README.md
|
@ -38,11 +38,39 @@ Gestion des Astronautes, de leurs VISA et VOEUX en mode CLI
|
|||
```
|
||||
Lancement API (1234) et MAP (12345)
|
||||
|
||||
## ./adventure/adventure.sh
|
||||
MODE AVENTURE : Activez votre VISA Astronaute sur une Station !
|
||||
|
||||
```
|
||||
~/.zen/Astroport.ONE/adventure/adventure.sh
|
||||
```
|
||||
|
||||
Trouvez le moyen d'accéder à votre "Station Astroport" en explorant les environs du premier de ce nom.
|
||||
|
||||
# USAGE
|
||||
# INSTALLATION (Docker)
|
||||
|
||||
```
|
||||
sudo apt install git make docker.io
|
||||
sudo adduser $USER docker
|
||||
|
||||
## REBOOT
|
||||
|
||||
cd ~/.zen/Astroport.ONE
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
Plus de connexion officielle.
|
||||
L'UTILISATEUR devient un JOUEUR, en semant son propre IPFS, en utilisant un Docker sur un nœud Astroport géré par un autre JOUEUR.
|
||||
|
||||
Ainsi, les AMIS peuvent héberger d'autres AMIS.
|
||||
|
||||
# RESULTAT
|
||||
|
||||
TW du PLAYER support@qo-op.com
|
||||
|
||||
https://ipfs.copylaradio.com/ipns/support.qo-op.com.localhost.copylaradio.com
|
||||
|
||||
# TW
|
||||
|
||||
Selon le modèle de votre TW,
|
||||
|
||||
|
@ -104,7 +132,7 @@ Vos données son stockées [dans des Tiddlers](http://libra.copylaradio.com:8080
|
|||
|
||||
### Foret Enchantée - PROJET ASTROPORT.pdf
|
||||
|
||||
http://tube.copylaradio.com:8080/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR
|
||||
https://ipfs.copylaradio.com/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR
|
||||
|
||||
# API
|
||||
|
||||
|
@ -136,13 +164,12 @@ http://_ASTROIP_:8080/ipns/_APID_/
|
|||
|
||||
_APID_ est la clef IPNS qui contient l'arborescence "json" en lecture
|
||||
|
||||
Exemple pour l'application "G1Voeu" http://tube.copylaradio.com:8080/ipns/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u
|
||||
Exemple pour l'application "G1Voeu" https://ipfs.copylaradio.com/ipns/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u
|
||||
|
||||
Application "messaging"
|
||||
http://tube.copylaradio.com:1234/?salt=toto&pepper=toto&messaging=on
|
||||
|
||||
|
||||
Pour écrire une application on utilisera "jsipfs"
|
||||
Pour écrire une application on pourra utiliser "jsipfs"
|
||||
|
||||
https://js.ipfs.tech/
|
||||
<script src="https://cdn.jsdelivr.net/npm/ipfs-core/dist/index.min.js"></script>
|
||||
|
@ -153,8 +180,8 @@ Ajoutez l'appel API "testcraft" pour enregistrer vos json
|
|||
http://tube.copylaradio.com:1234/?salt=toto&pepper=toto&testcraft=on&nodeid=12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j&dataid=QmZXo87nn34i54HhuMrbuXM5fKXymhV3Zj9exeZDK6s4WD
|
||||
|
||||
```
|
||||
# TYPE = official, g1pub, messaging, testcraft, ....
|
||||
http://127.0.0.1:1234/?salt=${SALT}&pepper=${PEPPER}&${TYPE}=?&...
|
||||
# APP = g1pub, messaging, testcraft, ....
|
||||
http://127.0.0.1:1234/?salt=${SALT}&pepper=${PEPPER}&${APP}=?&...
|
||||
```
|
||||
[12345.sh](/qo-op/Astroport.ONE/src/branch/master/12345.sh)
|
||||
|
||||
|
@ -164,7 +191,6 @@ DATA ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${TYPE}/${MOATS}.data.json
|
|||
INDEX ~/.zen/tmp/${IPFSNODEID}/${TYPE}.json
|
||||
```
|
||||
|
||||
|
||||
# TIDDLYWIKI
|
||||
|
||||
Les données produites par chaque clef sont stockées en tant que tiddlers dans des Tiddlywiki.
|
||||
|
|
|
@ -77,7 +77,7 @@ while true; do
|
|||
ls ~/.zen/tmp/swarm
|
||||
BSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1)
|
||||
|
||||
## SIZE MODIFIED
|
||||
## SIZE MODIFIED => PUBLISH MySwarm_$IPFSNODEID
|
||||
[[ $BSIZE != $(cat ~/.zen/tmp/swarm/.bsize) ]] \
|
||||
&& echo $BSIZE > ~/.zen/tmp/swarm/.bsize \
|
||||
&& SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \
|
||||
|
@ -85,7 +85,7 @@ while true; do
|
|||
|
||||
|
||||
############# PUBLISH IPFSNODEID BALISE
|
||||
# Clean Empty
|
||||
# Clean Empty Directory (inode dependancy BUG ??)
|
||||
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
|
||||
while read branch; do [[ $branch =~ "4096" ]] && rmdir $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
|
||||
|
|
391
ajouter_media.sh
391
ajouter_media.sh
|
@ -21,7 +21,11 @@
|
|||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
start=`date +%s`
|
||||
# REMOVE GtkDialog errors for zenity
|
||||
shopt -s expand_aliases
|
||||
alias zenity='zenity 2> >(grep -v GtkDialog >&2)'
|
||||
alias espeak='espeak 1>&2>/dev/null'
|
||||
########################################################################
|
||||
[[ $(which ipfs) == "" ]] && echo "ERREUR! Installez ipfs" && echo "wget https://git.p2p.legal/axiom-team/astrXbian/raw/master/.install/ipfs_alone.sh -O /tmp/ipfs_install.sh && chmod +x /tmp/ipfs_install.sh && /tmp/ipfs_install.sh" && exit 1
|
||||
[[ $(which zenity) == "" ]] && echo "ERREUR! Installez zenity" && echo "sudo apt install zenity" && exit 1
|
||||
|
@ -30,18 +34,30 @@ ME="${0##*/}"
|
|||
|
||||
# Check who is .current PLAYER
|
||||
PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
|
||||
[[ ${PLAYER} == "" ]] && espeak "ERROR CONNECT YOUR PLAYER - EXIT" && exit 1
|
||||
PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null)
|
||||
G1PUB=$(cat ~/.zen/game/players/.current/.g1pub 2>/dev/null)
|
||||
[[ $G1PUB == "" ]] && espeak "ERROR NO G1 PUBLIC KEY FOUND - EXIT" && exit 1
|
||||
|
||||
PLAYERNS=$(cat ~/.zen/game/players/.current/.playerns 2>/dev/null) || ( echo "noplayerns" && exit 1 )
|
||||
[[ ${PLAYER} == "" ]] \
|
||||
&& espeak "YOU MUST CONNECT A PLAYER" \
|
||||
&& OUTPUT=$(zenity --forms --width 480 --title="CONNEXION" --text="Ecrivez la formule magique" --separator="~" --add-entry="Phrase 1" --add-entry="Phrase 2") \
|
||||
&& SALT=$(awk -F '~' '{print $1}' <<<$OUTPUT) \
|
||||
&& PEPPER=$(awk -F '~' '{print $2}' <<<$OUTPUT) \
|
||||
&& PLAYER=$(zenity --entry --width 300 --title "PLAYER" --text "Indiquez votre email" --entry-text="user@domain.tld") \
|
||||
&& ${MY_PATH}/tools/VISA.new.sh "$SALT" "$PEPPER" "$PLAYER"
|
||||
|
||||
PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null)
|
||||
espeak "Hello $PSEUDO"
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null)
|
||||
[[ $G1PUB == "" ]] && espeak "ERROR NO G 1 PUBLIC KEY FOUND - EXIT" && exit 1
|
||||
|
||||
PLAYERNS=$(cat ~/.zen/game/players/${PLAYER}/.playerns 2>/dev/null) || ( echo "noplayerns" && exit 1 )
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1)
|
||||
[[ $ASTRONAUTENS == "" ]] && echo "ASTRONAUTE manquant" && espeak "Astronaut Key Missing" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||
[[ $IPFSNODEID == "" ]] && echo "IPFSNODEID manquant" && espeak "IPFS NODE ID Missing" && exit 1
|
||||
|
||||
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])/")
|
||||
[[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
|
||||
|
@ -56,10 +72,6 @@ if [ $URL ]; then
|
|||
CHOICE="$IMPORT"
|
||||
fi
|
||||
|
||||
# REMOVE GtkDialog errors for zenity
|
||||
shopt -s expand_aliases
|
||||
alias zenity='zenity 2> >(grep -v GtkDialog >&2)'
|
||||
alias espeak='espeak 1>&2>/dev/null'
|
||||
|
||||
# GET SCREEN DIMENSIONS
|
||||
screen=$(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
|
||||
|
@ -71,7 +83,7 @@ haut=$((height-200))
|
|||
########################################################################
|
||||
## CADRE EXCEPTION COPIE PRIVE
|
||||
# https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006278917/2008-12-11/
|
||||
if [[ ! -f ~/.zen/game/players/.current/legal ]]; then
|
||||
if [[ ! -f ~/.zen/game/players/${PLAYER}/legal ]]; then
|
||||
zenity --width ${large} --height=${haut} --text-info \
|
||||
--title="Action conforme avec le Code de la propriété intellectuelle" \
|
||||
--html \
|
||||
|
@ -81,12 +93,12 @@ zenity --width ${large} --height=${haut} --text-info \
|
|||
case $? in
|
||||
0)
|
||||
echo "AUTORISATION COPIE PRIVE ASTROPORT OK !"
|
||||
echo "$G1PUB" > ~/.zen/game/players/.current/legal
|
||||
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/legal
|
||||
# next step
|
||||
;;
|
||||
1)
|
||||
echo "Refus conditions"
|
||||
rm -f ~/.zen/game/players/.current/legal
|
||||
rm -f ~/.zen/game/players/${PLAYER}/legal
|
||||
exit 1
|
||||
;;
|
||||
-1)
|
||||
|
@ -96,7 +108,7 @@ case $? in
|
|||
esac
|
||||
fi
|
||||
|
||||
## DES/ACTIVATION ASTROPORT
|
||||
## CHANGE ASTROPORT BOOTSTRAP
|
||||
if [[ $1 == "on" ]]; then
|
||||
STRAP=$(ipfs bootstrap)
|
||||
BOOT=$(zenity --entry --width 300 --title="Catégorie" --text="$STRAP Changez de Bootstrap" --entry-text="Aucun" Astroport Public)
|
||||
|
@ -106,6 +118,14 @@ if [[ $1 == "on" ]]; then
|
|||
REP=$(${MY_PATH}/tools/cron_VRFY.sh ON) && zenity --warning --width 600 --text "$REP"
|
||||
fi
|
||||
|
||||
###
|
||||
# IS THERE ANY RUNNING IPFS ADD
|
||||
ISADDING=$(ps auxf --sort=+utime | grep -w 'ipfs add' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
ISPUBLISHING=$(ps auxf --sort=+utime | grep -w 'ipfs name publish' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ $ISADDING || $ISPUBLISHING ]] \
|
||||
&& espeak "I P F S progressing. Please try again later" && exit 1
|
||||
|
||||
########################################################################
|
||||
espeak "restart I P F S daemon"
|
||||
sudo systemctl restart ipfs
|
||||
sleep 1
|
||||
|
@ -113,11 +133,13 @@ sleep 1
|
|||
YOU=$(ipfs swarm peers >/dev/null 2>&1 && echo "$USER" || ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ ! $YOU ]] && espeak "I P F S not running - EXIT" && exit 1
|
||||
|
||||
########################################################################
|
||||
espeak "Ready !"
|
||||
########################################################################
|
||||
|
||||
########################################################################
|
||||
# CHOOSE CATEGORY (remove anime, not working!)
|
||||
[[ $CHOICE == "" ]] && CHOICE=$(zenity --entry --width 300 --title="Catégorie" --text="Choisissez la catégorie de votre media" --entry-text="Vlog" Film Serie Page Youtube Video)
|
||||
[[ $CHOICE == "" ]] && CHOICE=$(zenity --entry --width 300 --title="Catégorie" --text="Quelle catégorie pour ce media ?" --entry-text="Vlog" Video Film Serie Web Page Youtube Mp3)
|
||||
[[ $CHOICE == "" ]] && exit 1
|
||||
|
||||
# LOWER CARACTERS
|
||||
|
@ -132,7 +154,9 @@ PREFIX=$(echo "${CAT}" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, S, A
|
|||
########################################################################
|
||||
case ${CAT} in
|
||||
########################################################################
|
||||
# CASE ## ASTRONAUTE
|
||||
########################################################################
|
||||
########################################################################
|
||||
# CASE ## VLOG
|
||||
#~ __ ___
|
||||
#~ \ \ / / | ___ __ _
|
||||
#~ \ \ / /| |/ _ \ / _` |
|
||||
|
@ -143,7 +167,7 @@ case ${CAT} in
|
|||
########################################################################
|
||||
vlog)
|
||||
|
||||
espeak "vlog is video blogging"
|
||||
espeak "Ready to record your webcam"
|
||||
|
||||
zenity --warning --width 300 --text "${PLAYER}. Prêt à enregistrer votre video ?"
|
||||
|
||||
|
@ -193,11 +217,16 @@ JSON_FILE=$(echo ${FILE_NAME} | sed "s/${FILE_EXT}/json/g")
|
|||
YID=$(echo "${FILE_NAME}" | cut -d "&" -f 1)
|
||||
YNAME=$(echo "${FILE_NAME}" | cut -d "&" -f 2- | sed "s/[(][^)]*[)]//g" | sed -e 's/[^A-Za-z0-9._-]/_/g' | sed -e 's/__/_/g' ) # Remove YoutubeID_ and (what is in perentheses)
|
||||
[[ $(which detox) ]] && YNAME=$(echo "${FILE_NAME}" | cut -d "&" -f 2- | detox --inline)
|
||||
|
||||
espeak "OK $YNAME copied"
|
||||
|
||||
MEDIAID="$REVSOURCE${YID}"
|
||||
TITLE="${YNAME%.*}"
|
||||
MEDIAKEY="YOUTUBE_${MEDIAID}"
|
||||
## CORRECT PARAMETERS to Make Kodi compatible YASTRXBIAN FILE
|
||||
|
||||
espeak "Please. Choose your tags"
|
||||
|
||||
[ ! $2 ] && GENRES=$(zenity --list --checklist --title="GENRE" --height=${haut} \
|
||||
--text="Choisissez le(s) genre(s) d'information(s) contenue(s) dans cette vidéo \"${TITLE}\" publiée sur OASIS" \
|
||||
--column="Use" \
|
||||
|
@ -253,25 +282,104 @@ rm -Rf ${YTEMP}
|
|||
|
||||
web)
|
||||
|
||||
espeak "Clone a web site and make it better"
|
||||
[[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "Lien du site web à copier" --text "Indiquez le lien (URL)" --entry-text="")
|
||||
# URL="https://discuss.ipfs.io/t/limit-ipfs-get-command/3573/6"
|
||||
espeak "Mirror web site"
|
||||
cd ~/.zen/tmp/
|
||||
|
||||
espeak "NOT READY. Please Help Debug. EXIT" && exit 0
|
||||
URL=$(echo $URL | grep -Eo '^http[s]?://[^/]+')
|
||||
[[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "Lien du site Web à copier" --text "Indiquez le lien (URL)" --entry-text="")
|
||||
|
||||
FILE_NAME="index.html"
|
||||
REVSOURCE="$(echo "$URL" | rev | sha256sum | cut -d ' ' -f 1)_"; echo $REVSOURCE # URL="https://discuss.ipfs.io/t/limit-ipfs-get-command/3573/6"
|
||||
MEDIAID="$REVSOURCE" # MEDIAID=1252ff59950395070a0cc56bb058cbb1ccfd2f8d8a32476acaf472f62b14d97d_
|
||||
MEDIAKEY="WWW_${MEDIAID}" # MEDIAKEY=PAGE_1252ff59950395070a0cc56bb058cbb1ccfd2f8d8a32476acaf472f62b14d97d_
|
||||
FILE_PATH="$HOME/Astroport/web/$MEDIAID";
|
||||
mkdir -p $FILE_PATH
|
||||
## Extract http(s)://domain.tld
|
||||
URL=$(echo $URL | grep -Eo '^http[s]?://[^/]+') # URL="https://discuss.ipfs.io"
|
||||
DOMAIN=$(echo $URL | rev | cut -d '/' -f1 | rev) # DOMAIN=discuss.ipfs.io
|
||||
ARR=($(echo $DOMAIN | sed "s~\.~ ~g")) # ARR=discuss ipfs io
|
||||
NIAMOD=$(printf '%s\n' "${ARR[@]}" | tac | tr '\n' '.' ) # NIAMOD=io.ipfs.discuss.
|
||||
NIAPATH=$(echo $NIAMOD | sed "s~\.~\/~g") # NIAPATH=io/ipfs/discuss/
|
||||
|
||||
wget -mpck --html-extension --recursive --convert-links --user-agent="Astroport.One" -e robots=off --wait 1 -P ${FILE_PATH} "$URL"
|
||||
# wget --recursive --convert-links -mpck --html-extension --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36." -e robots=off -P ${FILE_PATH} "$URL"
|
||||
# wget \ --mirror \ --warc-file=$MEDIAID \ --no-verbose \ --warc-cdx \ --page-requisites \ --adjust-extension \ --convert-links \ --no-warc-compression \ --no-warc-keep-log \ --append-output="$MEDIAID" \ --execute robots=off \ -P ${FILE_PATH} "$URL"
|
||||
TITLE=$DOMAIN
|
||||
GENRES="Web"
|
||||
|
||||
echo "web;${MEDIAID};$(date -u +%s%N | cut -b1-13);${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$FILE_NAME" > ~/Astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||
espeak "${ARR[@]}"
|
||||
|
||||
zenity --warning --width ${large} --text "Vérifiez que la copie de votre site se trouve bien dans ${FILE_PATH}/"
|
||||
## CREATE IPNS KEY HOOK JUST FOR FUN
|
||||
REVSOURCE="$(echo "$NIAMOD" | rev | sha256sum | cut -d ' ' -f 1)"; echo $REVSOURCE
|
||||
MEDIAKEY="$REVSOURCE" # MEDIAKEY=435582881619ee4df9e2723fb9e20bb173b32818094a3e40c9536068ae3730ac
|
||||
|
||||
IPNSKEY=$(ipfs key list -l | grep -w $MEDIAKEY | cut -d ' ' -f 1 )
|
||||
if [[ ! $IPNSKEY ]]; then
|
||||
# Funny Crypto Level # TODO MAKE IT MORE SECURE # THIS KEY OWNS THE DOMAIN NOW
|
||||
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/tmp/$MEDIAKEY.ipns "$DOMAIN" "$NIAMOD"
|
||||
IPNSKEY=$(ipfs key import $MEDIAKEY -f pem-pkcs8-cleartext ~/.zen/tmp/$MEDIAKEY.ipns)
|
||||
fi
|
||||
|
||||
MEDIAID="WEB_${NIAMOD}" # MEDIAID=WEB_io.ipfs.discuss.
|
||||
|
||||
FILE_PATH="$HOME/Astroport/web/$MEDIAID"; # FILE_PATH=/home/fred/Astroport/web/WEB_io.ipfs.discuss.
|
||||
|
||||
start=`date +%s`
|
||||
|
||||
mkdir -p $FILE_PATH
|
||||
cd $FILE_PATH
|
||||
|
||||
espeak "Let's go. " ###################### HTTRACK COPYING
|
||||
|
||||
httrack -wxY --sockets=99 −−max−rate=0 --disable-security-limits −−keep−alive --ext-depth=0 --stay-on-same-domain --keep-links=0 -V "echo \$0 >> $FILE_PATH/files" "$URL" -* +*/$DOMAIN/* -*wget* # -%l "fr"
|
||||
|
||||
mv $FILE_PATH/external.html $FILE_PATH/$DOMAIN/
|
||||
## G1PUB ENCODE.16 MEDIAKEY
|
||||
${MY_PATH}/tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/tmp/$MEDIAKEY.ipns -o $HOME/.zen/tmp/$MEDIAKEY.ipns.enc
|
||||
cat $HOME/.zen/tmp/$MEDIAKEY.ipns.enc | base16 > $FILE_PATH/$DOMAIN/.ipnskey.$G1PUB.enc.16
|
||||
|
||||
## BLOCKCHAIN IT
|
||||
echo "$MOATS" > $FILE_PATH/$DOMAIN/.moats # TIMESTMAPING
|
||||
echo "$IPNSKEY" > $FILE_PATH/$DOMAIN/.ipnshook # SELF REFERING
|
||||
|
||||
espeak "OK Web is copied. Adding to I P F S now..."
|
||||
|
||||
### ADD TO IPFS
|
||||
IPFSREPFILEID=$(ipfs add -qHwr $FILE_PATH/$DOMAIN/* | tail -n 1) # ADDING $DOMAIN TO IPFS
|
||||
ipfs name publish -k $MEDIAKEY /ipfs/$IPFSREPFILEID # PUBLISH $MEDIAKEY
|
||||
|
||||
## CREATE ajouter_video.txt
|
||||
echo "web;${MEDIAID};${MOATS};${TITLE};${SAISON};${GENRES};$IPNSKEY;${RES};/ipfs/$IPFSREPFILEID" > ~/Astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||
|
||||
## DURATION LOG
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${MEDIAID}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
|
||||
## TIDDLER CREATION
|
||||
FILE_BSIZE=$(du -b "$FILE_PATH/$DOMAIN/" | awk '{print $1}' | tail -n 1)
|
||||
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||
|
||||
## NB TEXT IS MADE WITH TIDDLERS FIELDS VALUES (LEARN TODO)
|
||||
TEXT="<iframe src={{{ [{$:/ipfs/saver/gateway/http/localhost!!text}] [{!!ipfs}] +[join[]] }}} height='360' width='100%'></iframe>
|
||||
Web : $URL ----> <a href={{{ [{$:/ipfs/saver/gateway/http/localhost!!text}] [{!!ipfs}] +[join[]] }}}}><<currentTiddler>></a>
|
||||
<br>$FILE_SIZE - $dur sec"
|
||||
|
||||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"modified": "'${MOATS}'",
|
||||
"dur": "'$dur'",
|
||||
"title": "'${NIAMOD}'",
|
||||
"type": "'text/vnd.tiddlywiki'",
|
||||
"text": "'$TEXT'",
|
||||
"size": "'${FILE_BSIZE}'",
|
||||
"g1pub": "'${G1PUB}'",
|
||||
"ipfs": "'/ipfs/${IPFSREPFILEID}'",
|
||||
"mediakey": "'${MEDIAKEY}'",
|
||||
"ipnskey16": "'$(cat $HOME/.zen/tmp/$MEDIAKEY.ipns.enc | base16)'",
|
||||
"ipns": "'/ipns/${IPNSKEY}'",
|
||||
"tags": "'ipfs G1Web $PLAYER webmaster@$DOMAIN'"
|
||||
}
|
||||
]
|
||||
' > ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json
|
||||
|
||||
# zenity --warning --width ${large} --text "Copie $URL dans ${FILE_PATH}/ et /ipns/$IPNSKEY"
|
||||
|
||||
espeak "Done. Tiddler is ready"
|
||||
|
||||
;;
|
||||
|
||||
|
@ -287,7 +395,9 @@ rm -Rf ${YTEMP}
|
|||
|
||||
page)
|
||||
|
||||
espeak "page : import P D F"
|
||||
espeak "Converting any web page into P D F"
|
||||
## EVOLVE TO ARTICLE
|
||||
# httrack --mirror --ext-depth=0 --depth=1 --near --stay-on-same-address --keep-links=0 --path article-x --quiet https://example.com/article-x/
|
||||
|
||||
[[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "Lien de la page à convertir en PDF" --text "Indiquez le lien (URL)" --entry-text="")
|
||||
|
||||
|
@ -298,7 +408,7 @@ rm -Rf ${YTEMP}
|
|||
cd ~/.zen/tmp/ && rm -f output.pdf
|
||||
|
||||
# https://peter.sh/experiments/chromium-command-line-switches
|
||||
${MY_PATH}/tools/timeout.sh -t 12 \
|
||||
${MY_PATH}/tools/timeout.sh -t 30 \
|
||||
chromium --headless --use-mobile-user-agent --no-sandbox --print-to-pdf "$URL"
|
||||
fi
|
||||
|
||||
|
@ -321,6 +431,8 @@ rm -Rf ${YTEMP}
|
|||
|
||||
[[ ! -s ~/.zen/tmp/output.pdf ]] && espeak "No file Sorry. Exit" && exit 1
|
||||
|
||||
espeak "OK Page copied. Give it a title please"
|
||||
|
||||
CTITLE=$(echo $URL | rev | cut -d '/' -f 1 | rev)
|
||||
|
||||
TITLE=$(zenity --entry --width 480 --title "Titre" --text "Quel nom de fichier à donner à cette page ? " --entry-text="${CTITLE}")
|
||||
|
@ -351,16 +463,16 @@ rm -Rf ${YTEMP}
|
|||
########################################################################
|
||||
mp3)
|
||||
|
||||
espeak "mp3 is music copying. Please help..."
|
||||
espeak " Youtube music copying. Please help us to make the Web your Web"
|
||||
|
||||
zenity --warning --width 600 --text 'DEVELOPPER ZONE ONLY - https://git.p2p.legal'
|
||||
exit 0
|
||||
zenity --warning --width 600 --text 'DEVELOPPEMENT ZONE - https://git.p2p.legal - P2P INTERNET FACTORY'
|
||||
|
||||
# Create TEMP directory
|
||||
YTEMP="$HOME/.zen/tmp/$(date -u +%s%N | cut -b1-13)"
|
||||
mkdir -p ${YTEMP}
|
||||
|
||||
artist=$(zenity --entry --width 400 --title "Extraction MP3 depuis Youtube" --text "Artiste recherché ou Lien Youtube" --entry-text="")
|
||||
YTURL="$URL"
|
||||
[[ $YTURL == "" ]] && artist=$(zenity --entry --width 400 --title "Extraction MP3 depuis Youtube" --text "Artiste recherché ou Lien Youtube" --entry-text="")
|
||||
[[ $artist == "" ]] && exit 1
|
||||
|
||||
## CHECK if artist is LINK or ID
|
||||
|
@ -370,17 +482,23 @@ if [[ ! $islink && $length != 11 ]]
|
|||
then
|
||||
# Ask for song name
|
||||
song=$(zenity --entry --width 300 --title "Titre à chercher sur Youtube" --text "Titre recherché" --entry-text="")
|
||||
[[ $song == "" ]] && exit 1
|
||||
else
|
||||
song=$(zenity --entry --width 300 --title "Confirmer ID" --text "Titre recherché (ou confirmer la saisie précédente)" --entry-text="$artist")
|
||||
[[ "$song" == "$artist" ]] && song=""
|
||||
fi
|
||||
[[ $song == "" ]] && espeak "I was expecting a song name. Sorry. I Am out." && exit 1
|
||||
|
||||
# Download mp3 from 1st youtube search video result (--write-info-json)
|
||||
/usr/local/bin/youtube-dl --default-search ytsearch1: \
|
||||
# Download mp3 from 1st youtube search video result (--write-info-json)
|
||||
/usr/local/bin/youtube-dl --default-search ytsearch1: \
|
||||
--ignore-errors --no-mtime \
|
||||
--embed-thumbnail --metadata-from-title "%(artist)s - %(title)s" --add-metadata \
|
||||
--extract-audio --audio-format mp3 -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" "$artist $song"
|
||||
|
||||
else
|
||||
|
||||
# artist is the URL ot the song
|
||||
/usr/local/bin/youtube-dl \
|
||||
--ignore-errors --no-mtime \
|
||||
--embed-thumbnail --metadata-from-title "%(artist)s - %(title)s" --add-metadata \
|
||||
--extract-audio --audio-format mp3 -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" "$artist $song"
|
||||
--extract-audio --audio-format mp3 -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" "$artist"
|
||||
|
||||
fi
|
||||
|
||||
ls ${YTEMP}
|
||||
# Get filename, extract ID, make destination dir and move copy.
|
||||
|
@ -392,8 +510,7 @@ YID=$(echo "${FILE_NAME}" | cut -d "&" -f 1)
|
|||
YNAME=$(echo "${FILE_NAME}" | cut -d "&" -f 2- | sed "s/[(][^)]*[)]//g" | sed -e 's/[^A-Za-z0-9._-]/_/g' | sed -e 's/__/_/g') # Remove YoutubeID_ and (what is in perentheses)
|
||||
[[ $(which detox) ]] && YNAME="$(echo "${FILE_NAME}" | cut -d "&" -f 2- | detox --inline)"
|
||||
|
||||
[[ ! $islink && "$song" != "" ]] && FILE_PATH="$HOME/Astroport/$CAT/$artist/_o-o_" \
|
||||
|| FILE_PATH="$HOME/Astroport/$CAT/${YID}"
|
||||
FILE_PATH="$HOME/Astroport/$CAT/${YID}"
|
||||
|
||||
mkdir -p "${FILE_PATH}" && mv -f ${YTEMP}/* "${FILE_PATH}/"
|
||||
# Remove "&" from FILE_NAME rename to YNAME
|
||||
|
@ -407,12 +524,52 @@ MEDIAKEY="MP3_$MEDIAID"
|
|||
|
||||
rm -Rf ${YTEMP}
|
||||
# zenity --warning --width ${large} --text "MP3 copié"
|
||||
echo "${MY_PATH}/tools/new_mp3_in_astroport.sh \"${FILE_PATH}/\" \"${FILE_NAME}\""
|
||||
${MY_PATH}/tools/new_mp3_in_astroport.sh "${FILE_PATH}/" "${FILE_NAME}" > /tmp/${CHOICE}_${MEDIAID}.log 2>&1
|
||||
echo "new_mp3_in_astroport \"${FILE_PATH}/\" \"${FILE_NAME}\""
|
||||
# ${MY_PATH}/tools/new_mp3_in_astroport.sh "${FILE_PATH}/" "${FILE_NAME}"
|
||||
|
||||
cat /tmp/${CHOICE}_${MEDIAID}.log
|
||||
## BLOCKCHAIN IT
|
||||
start=`date +%s`
|
||||
|
||||
exit 0
|
||||
echo "$MOATS" > $FILE_PATH/.moats # TIMESTMAPING
|
||||
|
||||
### ADD TO IPFS
|
||||
IPFSREPFILEID=$(ipfs add -q $FILE_PATH/$FILE_NAME | tail -n 1) # ADDIN TO IPFS
|
||||
|
||||
## CREATE ajouter_video.txt
|
||||
echo "mp3;${MEDIAID};${MOATS};${TITLE};${SAISON};${GENRES};$GROUPES;${RES};/ipfs/$IPFSREPFILEID" > ${FILE_PATH}/ajouter_video.txt
|
||||
|
||||
## DURATION LOG
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo ${MOATS}:${G1PUB}:${PLAYER}:${MEDIAID}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
|
||||
## TIDDLER CREATION
|
||||
FILE_BSIZE=$(du -b "$FILE_PATH/$FILE_NAME" | awk '{print $1}' | tail -n 1)
|
||||
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||
|
||||
TEXT=""
|
||||
|
||||
mkdir -p ~/Astroport/${CAT}/${MEDIAID}/
|
||||
|
||||
echo '[
|
||||
{
|
||||
"created": "'${MOATS}'",
|
||||
"modified": "'${MOATS}'",
|
||||
"_canonical_uri": "'/ipfs/${IPFSREPFILEID}'",
|
||||
"title": "'$TITLE'",
|
||||
"artist": "'$artist'",
|
||||
"song": "'$song'",
|
||||
"dur": "'$dur'",
|
||||
"type": "'audio/mpeg'",
|
||||
"text": "'$TEXT'",
|
||||
"size": "'${FILE_BSIZE}'",
|
||||
"g1pub": "'${G1PUB}'",
|
||||
"ipfs": "'/ipfs/${IPFSREPFILEID}'",
|
||||
"mediakey": "'${MEDIAKEY}'",
|
||||
"tags": "'$:/isAttachment $:/isIpfs ipfs mp3 G1Mp3 $artist $song $PLAYER'"
|
||||
}
|
||||
]
|
||||
' > ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json
|
||||
|
||||
;;
|
||||
|
||||
|
@ -470,7 +627,8 @@ TITLE=$(echo "${TITLE}" | sed "s/[(][^)]*[)]//g" | sed -e 's/;/_/g' ) # Clean TI
|
|||
# VIDEO YEAR
|
||||
### CHECK IF PREVIOUS ajouter_video (Serie case)
|
||||
[[ -f ~/Astroport/${CAT}/${MEDIAID}/ajouter_video.txt ]] \
|
||||
&& PRE=$(cat ~/Astroport/${CAT}/${MEDIAID}/ajouter_video.txt | cut -d ';' -f 3)
|
||||
&& PRE=$(cat ~/Astroport/${CAT}/${MEDIAID}/ajouter_video.txt | cut -d ';' -f 3) \
|
||||
|| PRE=""
|
||||
YEAR=$(zenity --entry --width 300 --title "Année" --text "Indiquez année de la vidéo. Exemple: 1985" --entry-text="${PRE}")
|
||||
|
||||
# VIDEO RESOLUTION
|
||||
|
@ -535,12 +693,12 @@ FILM_GENRES=$(zenity --list --checklist --title="GENRE" --height=${haut}\
|
|||
# FORMAT GENRES ["genre1","genre2"] # USE IF YOU ACTIVATE KODI COMPATIBILITY
|
||||
GENRES="[\"$(echo ${FILM_GENRES} | sed s/\|/\",\"/g)\"]"
|
||||
|
||||
mv -f "${FILE_PATH}/${FILE_NAME}" "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}"
|
||||
mkdir -p ~/Astroport/${CAT}/${MEDIAID}/
|
||||
|
||||
if [ $? != 0 ]; then
|
||||
zenity --warning --width ${large} --text "Impossible de déplacer votre fichier ${FILE_PATH}/${FILE_NAME} vers ~/astroport - EXIT -"
|
||||
exit 1
|
||||
fi
|
||||
[[ ! -s "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}" ]] \
|
||||
&& cp "${FILE_PATH}/${FILE_NAME}" "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}" \
|
||||
&& [ $? != 0 ] \
|
||||
&& zenity --warning --width ${large} --text "(☓‿‿☓) ${FILE_PATH}/${FILE_NAME} vers ~/Astroport - EXIT -" && exit 1
|
||||
|
||||
FILE_NAME="${TITLE}${SAISON}.${FILE_EXT}"
|
||||
|
||||
|
@ -548,6 +706,11 @@ FILE_NAME="${TITLE}${SAISON}.${FILE_EXT}"
|
|||
URLENCODE_FILE_NAME=$(echo ${FILE_NAME} | jq -Rr @uri)
|
||||
echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/Astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||
# _IPFSREPFILEID_ is replaced later
|
||||
#######################################################
|
||||
######## NOT CREATING TIDDLER JSON... SWALLOW IS POST-PROCESSED
|
||||
## new_file_in_astroport.sh ACTIVATES CONTRACT MODE !!
|
||||
#######################################################
|
||||
#######################################################
|
||||
|
||||
;;
|
||||
# video _ _
|
||||
|
@ -557,15 +720,15 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
|
|||
# \_/ |_|\__,_|\___|\___/
|
||||
# TIMESTAMP INDEX
|
||||
|
||||
video)
|
||||
video | obs)
|
||||
|
||||
espeak "Simply adds your personnal video in TW"
|
||||
espeak "Add your personnal video in TW"
|
||||
|
||||
zenity --warning --width 600 --text 'DEV ZONE - HELP US - REGISTER - https://git.p2p.legal'
|
||||
|
||||
## GENERAL MEDIAKEY for uploaded video. Title + Decription + hashtag + hashipfs
|
||||
# SELECT FILE TO ADD TO ASTROPORT/KODI
|
||||
FILE=$(zenity --file-selection --title="Sélectionner le fichier vidéo à ajouter")
|
||||
FILE=$(zenity --file-selection --title="Sélectionner votre vidéo")
|
||||
echo "${FILE}"
|
||||
[[ $FILE == "" ]] && exit 1
|
||||
|
||||
|
@ -574,8 +737,14 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
|
|||
FILE_NAME="$(basename "${FILE}")"
|
||||
FILE_EXT="${FILE_NAME##*.}"
|
||||
FILE_TITLE="${FILE_NAME%.*}"
|
||||
|
||||
# MUST CONVERT MKV TO MP4
|
||||
[[ $FILE_EXT != "mp4" ]] \
|
||||
&& ffmpeg -loglevel quiet -i "${FILE_PATH}/${FILE_NAME}" -c:v libx264 -c:a aac "${FILE_PATH}/$FILE_TITLE.mp4" \
|
||||
&& FILE_EXT="mp4" && FILE_NAME="$FILE_TITLE.mp4"
|
||||
|
||||
# VIDEO TITLE
|
||||
TITLE=$(zenity --entry --width 300 --title "Titre" --text "Indiquez le titre de la vidéo" --entry-text="${FILE_TITLE}")
|
||||
TITLE=$(zenity --entry --width 300 --title "Titre" --text "Indiquez un titre pour cette vidéo" --entry-text="${FILE_TITLE}")
|
||||
[[ $TITLE == "" ]] && exit 1
|
||||
TITLE=$(echo "${TITLE}" | sed "s/[(][^)]*[)]//g" | sed -e 's/;/_/g' ) # Clean TITLE (NO ;)
|
||||
|
||||
|
@ -586,10 +755,20 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
|
|||
|
||||
## CREATE SIMPLE JSON (REMOVE== it ?
|
||||
jq -n --arg ts "$MEDIAID" --arg title "$TITLE" --arg desc "$DESCRIPTION" --arg htag "$HASHTAG" '{"timestamp":$ts,"ipfs":"_IPFSREPFILEID_","ipns":"_IPNSKEY_","title":$title,"desc":$desc,"tag":$htag}' > ~/Astroport/${CAT}/${MEDIAID}/video.json
|
||||
|
||||
## MOVE FILE TO IMPORT ZONE
|
||||
mv -f "${FILE_PATH}/${FILE_NAME}" "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}"
|
||||
[[ ! -s "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}" ]] \
|
||||
&& cp "${FILE_PATH}/${FILE_NAME}" "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}"
|
||||
|
||||
FILE_NAME="${TITLE}.${FILE_EXT}"
|
||||
|
||||
#######################################################
|
||||
######## NOT CREATING TIDDLER JSON... SWALLOW IS POST-PROCESSED
|
||||
## new_file_in_astroport.sh FOR OWN CREATION CONTRACTING MODE !!
|
||||
#######################################################
|
||||
#######################################################
|
||||
|
||||
|
||||
;;
|
||||
|
||||
########################################################################
|
||||
|
@ -616,6 +795,7 @@ esac
|
|||
if [[ $(echo $DISPLAY | cut -d ':' -f 1) == "" ]]; then
|
||||
espeak "beware taking screen shot in 3 seconds"
|
||||
sleep 3
|
||||
espeak "smile"
|
||||
import -window root ~/.zen/tmp/screen.png
|
||||
fi
|
||||
|
||||
|
@ -637,65 +817,48 @@ echo "(♥‿‿♥) new_file_in_astroport.sh \"$HOME/Astroport/${CAT}/${MEDIAID
|
|||
########################################################################
|
||||
####################################new_file_in_astroport.sh##################
|
||||
########################################################################
|
||||
[[ "$CAT" == "film" || "$CAT" == "serie" ]] && CHOICE="TMDB"
|
||||
if [[ ! -s ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; then
|
||||
[[ "$CAT" == "film" || "$CAT" == "serie" ]] && CHOICE="TMDB"
|
||||
|
||||
timestamp=$(date -u +%s%N | cut -b1-13)
|
||||
timestamp=$(date -u +%s%N | cut -b1-13)
|
||||
|
||||
## OLD CODE !!! ADD TO ASTROPORT SCRIPT
|
||||
## NOW CREATE TIDDLER INTO PLAYER TW
|
||||
## OLD CODE !!! ADD TO ASTROPORT SCRIPT
|
||||
## NOW CREATE TIDDLER INTO PLAYER TW
|
||||
|
||||
echo "MEDIAKEY=${MEDIAKEY}" > ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
echo "MEDIAKEY=${MEDIAKEY}" > ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
|
||||
## ACTIVATE h265 conversion .?
|
||||
#[[ $CHOICE == "TMDB" ]] && echo "echo \"Encoder ${FILE_NAME} en h265 avant import ? Tapez sur ENTER.. Sinon saisissez qqch avant...\"
|
||||
#reponse=\$1
|
||||
#[[ ! \$reponse ]] && read reponse
|
||||
#if [[ ! \$reponse ]]; then
|
||||
# ffmpeg -i \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}\" -vcodec libx265 -crf 28 $HOME/Astroport/${MEDIAID}.mp4
|
||||
# mv \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}\" \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}.old\"
|
||||
# mv $HOME/Astroport/${MEDIAID}.mp4 \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}.mp4\"
|
||||
# ${MY_PATH}/tools/new_file_in_astroport.sh \"$HOME/Astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}.mp4\"
|
||||
#else" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
## ACTIVATE h265 conversion .?
|
||||
#[[ $CHOICE == "TMDB" ]] && echo "echo \"Encoder ${FILE_NAME} en h265 avant import ? Tapez sur ENTER.. Sinon saisissez qqch avant...\"
|
||||
#reponse=\$1
|
||||
#[[ ! \$reponse ]] && read reponse
|
||||
#if [[ ! \$reponse ]]; then
|
||||
# ffmpeg -i \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}\" -vcodec libx265 -crf 28 $HOME/Astroport/${MEDIAID}.mp4
|
||||
# mv \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}\" \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}.old\"
|
||||
# mv $HOME/Astroport/${MEDIAID}.mp4 \"$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}.mp4\"
|
||||
# ${MY_PATH}/tools/new_file_in_astroport.sh \"$HOME/Astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}.mp4\"
|
||||
#else" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
|
||||
# $3 is the G1PUB of the PLAYER
|
||||
echo "${MY_PATH}/tools/new_file_in_astroport.sh \"$HOME/Astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}\" \"$G1PUB\"" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
# $3 is the G1PUB of the PLAYER
|
||||
echo "${MY_PATH}/tools/new_file_in_astroport.sh \"$HOME/Astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}\" \"$G1PUB\"" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
|
||||
#[[ $CHOICE == "TMDB" ]] && echo "fi" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
#[[ $CHOICE == "TMDB" ]] && echo "fi" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
|
||||
echo "mv ~/Astroport/Add_${MEDIAKEY}_script.sh \"$HOME/Astroport/Done_${FILE_NAME}.sh\"
|
||||
" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
echo "mv ~/Astroport/Add_${MEDIAKEY}_script.sh \"$HOME/Astroport/Done_${FILE_NAME}.sh\"
|
||||
" >> ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
|
||||
chmod +x ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
chmod +x ~/Astroport/Add_${MEDIAKEY}_script.sh
|
||||
|
||||
########################################################################
|
||||
## USE PLAYER G1PUB AS MEDIA WALLET
|
||||
MEDIAPUBKEY=$(cat ~/.zen/game/players/.current/.g1pub)
|
||||
G1BALANCE=$(${MY_PATH}/tools/jaklis/jaklis.py balance -p $G1PUB 2>/dev/null )
|
||||
########################################################################
|
||||
echo "(♥‿‿♥) $MEDIAKEY IPFS MIAM (ᵔ◡◡ᵔ)"
|
||||
# zenity --warning --width 360 --text "(♥‿‿♥) $MEDIAKEY IPFS MIAM (ᵔ◡◡ᵔ)"
|
||||
|
||||
########################################################################
|
||||
echo "# ZENBALANCE for ${MEDIAKEY} , WALLET $MEDIAPUBKEY"
|
||||
########################################################################
|
||||
FILE_BSIZE=$(du -b "$HOME/Astroport/${CAT}/${MEDIAID}/${FILE_NAME}" | awk '{print $1}')
|
||||
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||
espeak "Adding $CAT to I P F S. Please Wait"
|
||||
|
||||
#G1BALANCE=$(${MY_PATH}/tools/jaklis/jaklis.py balance -p $G1PUB) && [[ "$G1BALANCE" == "null" ]] && G1BALANCE=0 || G1BALANCE=$(echo "$G1BALANCE" | cut -d '.' -f 1)
|
||||
#if [[ $G1BALANCE -gt 0 ]]; then
|
||||
# [ ! $2 ] && G1AMOUNT=$(zenity --entry --width 400 --title "VIRER DE LA MONNAIE LIBRE AU MEDIAKEY (MAX $G1BALANCE)" --text "Combien de JUNE (G1) souhaitez-vous offrir à ce MEDIA ($FILE_SIZE)" --entry-text="")
|
||||
# [[ ! "$G1AMOUNT" =~ ^[0-9]+$ ]] && G1AMOUNT=0
|
||||
# ${MY_PATH}/tools/jaklis/jaklis.py -k ~/.zen/secret.dunikey pay -p ${MEDIAPUBKEY} -a $G1AMOUNT -c "#ASTROPORT:${MEDIAKEY} DON"
|
||||
# ZENBALANCE=$(echo "100 * $G1AMOUNT" | bc -l | cut -d '.' -f 1)
|
||||
#else
|
||||
ZENBALANCE=0
|
||||
#fi
|
||||
########################################################################
|
||||
zenity --warning --width 360 --text "(♥‿‿♥) $MEDIAKEY IPFS MIAM (ᵔ◡◡ᵔ)"
|
||||
espeak "Adding $CAT to I P F S. Please Wait"
|
||||
bash ~/Astroport/Add_${MEDIAKEY}_script.sh "noh265"
|
||||
|
||||
bash ~/Astroport/Add_${MEDIAKEY}_script.sh "noh265"
|
||||
|
||||
zenity --warning --width 320 --text "Ajout à votre TW ${PLAYER}"
|
||||
espeak "Updating T W Index"
|
||||
fi
|
||||
|
||||
espeak "Updating T W"
|
||||
|
||||
########################################################################
|
||||
## ADD TIDDLER TO TW
|
||||
|
@ -703,11 +866,12 @@ espeak "Updating T W Index"
|
|||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
## GETTING LAST TW via IPFS or HTTP GW
|
||||
LIBRA=$(head -n 2 ${MY_PATH}/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
rm ~/.zen/tmp/ajouter_media.html > /dev/null 2>&1
|
||||
[[ $YOU ]] && echo " ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/ajouter_media.html
|
||||
rm -f ~/.zen/tmp/ajouter_media.html > /dev/null 2>&1
|
||||
[[ $YOU ]] && echo " ipfs --timeout 30s cat /ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 30s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/ajouter_media.html
|
||||
[[ ! -s ~/.zen/tmp/ajouter_media.html ]] && echo "curl -m 12 $LIBRA/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/ajouter_media.html "$LIBRA/ipns/${ASTRONAUTENS}"
|
||||
[[ ! -s ~/.zen/tmp/ajouter_media.html ]] && espeak "WARNING. WARNING. impossible to find your TW online"
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ]] && espeak "FATAL ERROR. No player TW copy found ! EXIT" && exit 1
|
||||
## TODO : CHECK CACHE LAST MODIFIED
|
||||
echo "%%%%%%%%%%%%%% I GOT YOUR TW %%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
|
||||
[[ -s ~/.zen/tmp/ajouter_media.html ]] && cp -f ~/.zen/tmp/ajouter_media.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html && espeak "TW Found"
|
||||
|
@ -720,6 +884,7 @@ echo "%%%%%%%%%%%%%% I GOT YOUR TW %%%%%%%%%%%%%%%%%%%%%%%%%%"
|
|||
|
||||
if [[ -s ~/.zen/tmp/newindex.html ]]; then
|
||||
|
||||
mv ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ~/Astroport/${CAT}/${MEDIAID}/${MOATS}.dragdrop.json
|
||||
espeak "I P N S Publishing. Please wait..."
|
||||
cp ~/.zen/tmp/newindex.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
[[ $DIFF ]] && cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
|
||||
|
@ -736,12 +901,16 @@ echo "%%%%%%%%%%%%%% I GOT YOUR TW %%%%%%%%%%%%%%%%%%%%%%%%%%"
|
|||
echo "================================================"
|
||||
echo
|
||||
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && xdg-open "http://$myIP:8080/ipns/$ASTRONAUTENS"
|
||||
|
||||
else
|
||||
|
||||
espeak "Warning. Could not import Tiddler. You must add it by hand."
|
||||
|
||||
fi
|
||||
|
||||
espeak "OK We did it."
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
espeak "OK We did it and It tooks $dur seconds to acomplish"
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
alias Marge='git merge'
|
||||
alias gif='gif diff'
|
||||
alias chicken='git checkout'
|
||||
alias vala='cd'
|
||||
alias Guy_te_fait_chier='git fetch'
|
||||
alias poule='git pull'
|
||||
alias poussez='git push'
|
||||
alias pousseez='git push'
|
||||
alias pousseeez='git push'
|
||||
alias pousseeeez='git push'
|
||||
alias pousseeeeez='git push'
|
||||
alias pousseeeeeez='git push'
|
||||
alias pousseeeeeeez='git push'
|
||||
alias pousseeeeeeeez='git push'
|
||||
alias pousseeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeeeeeeez='git push'
|
||||
alias pousseeeeeeeeeeeeeeeeeeeeeeeeez='git push'
|
||||
|
|
@ -8,6 +8,7 @@ ARG DOCKER_SYSTEM=Linux
|
|||
RUN apt-get update \
|
||||
&& apt-get -fy upgrade \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get -fy install \
|
||||
basez \
|
||||
bash \
|
||||
bc \
|
||||
cron \
|
||||
|
@ -126,6 +127,7 @@ EXPOSE 1234 12345
|
|||
|
||||
COPY install.sh /install.sh
|
||||
COPY ${DOCKER_BUILD_DIR}/*.sh /app/
|
||||
COPY ${DOCKER_BUILD_DIR}/.*aliases /etc/skel/
|
||||
CMD ["/app/astroport.sh", "start"]
|
||||
|
||||
FROM dist as master
|
||||
|
@ -183,10 +185,14 @@ RUN echo "SHELL=/bin/bash" > "/var/spool/cron/crontabs/$USER" \
|
|||
&& echo "12 20 * * * /bin/bash /home/zen/.zen/Astroport.ONE/20h12.process.sh > /tmp/20h12.log 2>&1" >> "/var/spool/cron/crontabs/$USER" \
|
||||
&& chown "$USER" "/var/spool/cron/crontabs/$USER"
|
||||
|
||||
HEALTHCHECK CMD [ $(ps aux |grep 'nc -l -p' |wc -l) -lt 199 ] && echo -n OK
|
||||
|
||||
VOLUME "/home/$USER/.ipfs"
|
||||
VOLUME "/home/$USER/.zen"
|
||||
VOLUME "/home/$USER/.zen/game/players"
|
||||
VOLUME "/home/$USER/Astroport"
|
||||
|
||||
# homedir
|
||||
RUN mkdir -p "/home/$USER/.ipfs" "/home/$USER/.zen/game/players" "/home/$USER/Astroport" \
|
||||
&& chown "$USER" "/home/$USER/.ipfs" "/home/$USER/.zen/game/players" "/home/$USER/Astroport"
|
||||
|
||||
HEALTHCHECK CMD [ $(ps aux |grep 'nc -l -p' |wc -l) -lt 199 ] && echo -n OK
|
||||
|
||||
WORKDIR "/home/$USER"
|
||||
|
|
|
@ -10,13 +10,10 @@ cron() {
|
|||
}
|
||||
|
||||
log() {
|
||||
tail -F /var/log/fail2ban.log /var/log/syslog /var/log/auth.log /var/log/pam-script.log >&2
|
||||
tail -F /var/log/auth.log /var/log/pam-script.log >&2
|
||||
}
|
||||
|
||||
zen() {
|
||||
rm -rf /home/zen/.zen/tmp \
|
||||
&& mkdir -p /dev/shm/tmp \
|
||||
&& ln -s /dev/shm/tmp /home/zen/.zen/tmp
|
||||
[ -d "$ASTROPORT_DIR" ] && cd "$ASTROPORT_DIR" && git pull -q || git clone -q "$ASTROPORT_REPO" "$ASTROPORT_DIR"
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ services:
|
|||
build:
|
||||
args:
|
||||
- DOCKER_REPOSITORY=${DOCKER_REPOSITORY}
|
||||
- GID=${NODE_GID}
|
||||
- UID=${NODE_UID}
|
||||
- GID=${HOST_GID}
|
||||
- UID=${HOST_UID}
|
||||
container_name: ${COMPOSE_PROJECT_NAME}-astroport
|
||||
environment:
|
||||
- ENV=${ENV}
|
||||
|
@ -15,9 +15,12 @@ services:
|
|||
labels:
|
||||
- SERVICE_1234_CHECK_HTTP=/test
|
||||
- SERVICE_1234_NAME=${COMPOSE_SERVICE_NAME}-astroport-1234
|
||||
- SERVICE_1234_TAGS=${NODE_ASTROPORT_SERVICE_1234_TAGS}
|
||||
- SERVICE_1234_TAGS=${HOST_ASTROPORT_SERVICE_1234_TAGS:-}
|
||||
volumes:
|
||||
- dns:/dns
|
||||
|
||||
volumes:
|
||||
dns:
|
||||
ipfs:
|
||||
external: true
|
||||
name: ${COMPOSE_SERVICE_NAME}_ipfs
|
||||
|
|
|
@ -2,9 +2,6 @@ version: '3.8'
|
|||
|
||||
services:
|
||||
astroport:
|
||||
build:
|
||||
args:
|
||||
- SSH_PORT=${NODE_VDI_PORT:-22}
|
||||
cap_add:
|
||||
- IPC_LOCK # ecryptfs
|
||||
- NET_ADMIN # iptables
|
||||
|
@ -12,12 +9,20 @@ services:
|
|||
- SYS_ADMIN # ecryptfs
|
||||
environment:
|
||||
- DEBUG=${VDI_DEBUG:-}
|
||||
- ECRYPTERS=${NODE_VDI_ECRYPTERS:-}
|
||||
- LANG=${NODE_VDI_LANG:-}
|
||||
- ECRYPTERS=${HOST_VDI_ECRYPTERS:-zen}
|
||||
- LANG=${HOST_VDI_LANG:-}
|
||||
- RC_00_SOURCE=${USER_RC_SOURCE:-/etc/profile.d/rc_functions.sh}
|
||||
- RC_01_PS1_SET=${USER_RC_PS1_SET:-true}
|
||||
- RC_02_PROMPT_SET=${USER_RC_PROMPT_SET:-true}
|
||||
- RC_03_SSH_ADD=${USER_RC_SSH_ADD:-true}
|
||||
- RC_04_TMUX_ATTACH=${USER_RC_TMUX_ATTACH:-false}
|
||||
- RC_05_SCREEN_ATTACH=${USER_RC_SCREEN_ATTACH:-true}
|
||||
- SSH_AUTHORIZED_KEYS=${SSH_AUTHORIZED_KEYS:-}
|
||||
- SSH_PORT=${NODE_VDI_PORT:-22}
|
||||
- SSH_PORT=${SSH_PORT:-22}
|
||||
- SSH_PUBLIC_HOSTS=${SSH_PUBLIC_HOSTS:-}
|
||||
- SUDOERS=${NODE_VDI_SUDOERS:-}
|
||||
- SUDOERS=${HOST_VDI_SUDOERS:-zen}
|
||||
- TZ=${HOST_VDI_TZ:-:-{TZ}}
|
||||
- USERS=${HOST_VDI_USERS:-zen}
|
||||
security_opt:
|
||||
- apparmor=unconfined # ecryptfs
|
||||
- seccomp=unconfined # ecryptfs
|
||||
|
@ -26,6 +31,7 @@ services:
|
|||
- /etc/localtime:/etc/localtime:ro
|
||||
- /etc/default/console-setup:/etc/default/console-setup:ro
|
||||
- /etc/default/keyboard:/etc/default/keyboard:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- home:/home:delegated
|
||||
- shared:/shared:cached
|
||||
- shm:/dev/shm:delegated
|
||||
|
@ -33,11 +39,6 @@ services:
|
|||
volumes:
|
||||
home:
|
||||
shared:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
device: /mnt/shared
|
||||
o: bind
|
||||
shm:
|
||||
driver: local
|
||||
driver_opts:
|
||||
|
|
|
@ -13,11 +13,11 @@ services:
|
|||
tty: true
|
||||
volumes:
|
||||
- data:/home/zen/Astroport:cached
|
||||
- home:/home/zen/.zen/game/players:delegated
|
||||
- ipfs:/home/zen/.ipfs:cached,ro
|
||||
- zen:/home/zen/.zen:delegated
|
||||
working_dir: /home/zen
|
||||
|
||||
volumes:
|
||||
data:
|
||||
home:
|
||||
ipfs:
|
||||
zen:
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
COMPOSE_FILE_VDI := true
|
||||
COMPOSE_PROJECT_NAME := $(HOSTNAME)
|
||||
MAKE_VARS += NODE_VDI_PORT node
|
||||
SERVICE := astroport
|
||||
SSH_PORT := $(NODE_VDI_PORT)
|
||||
SSH_PUBLIC_HOSTS += git.p2p.legal
|
||||
STACK := node
|
||||
UFW_UPDATE := $(SERVICE)
|
||||
node := node/ipfs
|
||||
|
||||
bootstrap-stack: myos-node
|
||||
|
||||
COMPOSE_FILE_VDI := true
|
||||
DOCKER_IMAGES_MYOS := x2go:xfce-debian
|
||||
ENV_VARS += HOST_ASTROPORT_SERVICE_1234_TAGS
|
||||
HOST_ASTROPORT_SERVICE_1234_TAGS ?= urlprefix-astroport.$(DOMAIN)/
|
||||
HOST_ASTROPORT_UFW_UPDATE := 1234/tcp 12245:12445/tcp 45720/tcp
|
||||
MAKE_VARS += SSH_PORT User host
|
||||
SERVICE := astroport
|
||||
SSH_PORT := 45720
|
||||
SSH_PUBLIC_HOSTS := git.p2p.legal
|
||||
STACK := host
|
||||
User := User/ipfs
|
||||
host := host/ipfs
|
||||
|
|
56
install.sh
56
install.sh
|
@ -12,13 +12,20 @@ start=`date +%s`
|
|||
[ $(id -u) -eq 0 ] && echo "LANCEMENT root INTERDIT. Utilisez un simple utilisateur du groupe \"sudo\" SVP" && exit 1
|
||||
|
||||
########################################################################
|
||||
[[ ! $(which ipfs) ]] && echo "=== Installez IPFS KUBO !!" && echo "https://docs.ipfs.io/install/command-line/#official-distributions" && exit 1
|
||||
[[ ! $(which ipfs) ]] \
|
||||
&& echo "=== Installez IPFS KUBO puis relancez Install ===" \
|
||||
&& echo "bash <(wget -qO- https://git.p2p.legal/qo-op/Astroport.ONE/raw/branch/master/kubo_v0.16.0_linux-amd64.install.sh)" \
|
||||
&& [[ $(uname -p) == "x86_64" ]] \
|
||||
&& bash <(wget -qO- https://git.p2p.legal/qo-op/Astroport.ONE/raw/branch/master/kubo_v0.16.0_linux-amd64.install.sh)
|
||||
|
||||
|
||||
#### GIT CLONE ###############################################################
|
||||
[[ ! $(which git) ]] && sudo apt install -y git
|
||||
echo "=== CLONAGE '~/.zen/Astroport.ONE' depuis https://git.p2p.legal"
|
||||
mkdir -p ~/.zen
|
||||
cd ~/.zen
|
||||
|
||||
export GIT_SSL_NO_VERIFY=true
|
||||
git clone --depth 1 https://git.p2p.legal/qo-op/Astroport.ONE.git
|
||||
# TODO INSTALL FROM IPFS / IPNS
|
||||
|
||||
|
@ -33,17 +40,19 @@ echo "$USER appuyez sur ENTRER."; read TEST; [[ "$TEST" != "" ]] && echo "SORTI
|
|||
echo "#############################################"
|
||||
echo "###### IPFS BIOS INSTALL ##############################"
|
||||
echo "################ CRYPTO TW Ŋ1 PROTOCOL #############"
|
||||
echo "tail -f /tmp/install.errors.log"
|
||||
echo "##################################################"
|
||||
|
||||
echo ; echo "Mise à jour des dépots de votre distribution..."
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && sudo add-apt-repository ppa:obsproject/obs-studio
|
||||
sudo apt-get update
|
||||
|
||||
|
||||
for i in x11-utils xclip zenity; do
|
||||
for i in x11-utils xclip zenity obs-studio kodi; do
|
||||
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
|
||||
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && sudo apt install -y $i;
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.failed.log && continue
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.errors.log && continue
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -51,11 +60,11 @@ echo "#############################################"
|
|||
echo "######### PATIENCE ####"
|
||||
echo "#############################################"
|
||||
|
||||
for i in git fail2ban npm netcat-traditional inotify-tools curl net-tools libsodium* python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
|
||||
for i in git make fail2ban npm netcat-traditional inotify-tools curl net-tools libsodium* python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
|
||||
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
|
||||
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
|
||||
sudo apt install -y $i
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.failed.log && continue
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.errors.log && continue
|
||||
|
||||
fi
|
||||
done
|
||||
|
@ -67,7 +76,7 @@ for i in qrencode basez jq bc file gawk yt-dlp ffmpeg dnsutils ntpdate v4l-utils
|
|||
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
|
||||
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
|
||||
sudo apt install -y $i
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.failed.log && continue
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.errors.log && continue
|
||||
|
||||
fi
|
||||
done
|
||||
|
@ -78,7 +87,7 @@ echo "#############################################"
|
|||
##########################################################
|
||||
echo "### INSTALL TW node.js"
|
||||
sudo npm install -g tiddlywiki sjcl-cli
|
||||
[[ $? != 0 ]] && echo "INSTALL tiddlywikiFAILED." && echo "INSTALL tiddlywiki FAILED." >> /tmp/install.failed.log && continue
|
||||
[[ $? != 0 ]] && echo "INSTALL tiddlywikiFAILED." && echo "INSTALL tiddlywiki FAILED." >> /tmp/install.errors.log && continue
|
||||
|
||||
echo "#############################################"
|
||||
echo "######### PATIENCE #################"
|
||||
|
@ -116,9 +125,11 @@ echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc && source ~/.bashrc; echo
|
|||
for i in pip setuptools wheel cryptography==3.4.8 Ed25519 base58 google duniterpy pynacl pgpy pynentry SecureBytes; do
|
||||
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
|
||||
sudo python3 -m pip install -U $i
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "python3 -m pip install -U $i FAILED." >> /tmp/install.failed.log && continue
|
||||
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "python3 -m pip install -U $i FAILED." >> /tmp/install.errors.log && continue
|
||||
done
|
||||
|
||||
cat /tmp/install.errors.log
|
||||
|
||||
echo "#############################################"
|
||||
echo "######### PATIENCE ######################"
|
||||
echo "#############################################"
|
||||
|
@ -148,7 +159,7 @@ echo "=== SETUP IPFS SYSTEM"
|
|||
|
||||
#### SETUP JAKLIS ###############################################################
|
||||
echo "=== SETUP jaklis"
|
||||
cd $MY_PATH/tools/jaklis
|
||||
cd ~/.zen/Astroport.ONE/tools/jaklis
|
||||
sudo ./setup.sh
|
||||
|
||||
## XBIAN fail2ban ERROR correction ##
|
||||
|
@ -183,22 +194,30 @@ fi
|
|||
mkdir -p ~/Astroport/film
|
||||
mkdir -p ~/Astroport/serie
|
||||
mkdir -p ~/Astroport/anime
|
||||
mkdir -p ~/Astroport/page
|
||||
mkdir -p ~/Astroport/web
|
||||
mkdir -p ~/Astroport/video
|
||||
echo '${TYPE};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME' > ~/Astroport/ajouter_video.modele.txt
|
||||
|
||||
|
||||
#######################################################################
|
||||
|
||||
echo "#############################################"
|
||||
## https://darktrojan.github.io/openwith/webextension.html"
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && ~/.zen/Astroport.ONE/open_with_linux.py install; \
|
||||
|
||||
echo "# BLOB MODE avec 'OpenWith' depuis votre navigateur !!"
|
||||
## https://darktrojan.github.io/openwith/webextension.html"
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && ~/.zen/Astroport.ONE/open_with_linux.py install; \
|
||||
echo "#############################################" \
|
||||
echo "# NOURRIR SON BLOB" \
|
||||
echo "# avec 'OpenWith' depuis votre navigateur !!" \
|
||||
echo "# https://addons.mozilla.org/firefox/addon/open-with/
|
||||
# https://chrome.google.com/webstore/detail/open-with/cogjlncmljjnjpbgppagklanlcbchlno"
|
||||
# https://chrome.google.com/webstore/detail/open-with/cogjlncmljjnjpbgppagklanlcbchlno" \
|
||||
echo "#############################################" \
|
||||
echo \
|
||||
echo " ## $HOME/.zen/Astroport.ONE/ajouter_media.sh ##" \
|
||||
echo \
|
||||
echo "#############################################"
|
||||
|
||||
### ADD 20h12.sh CRON ###############
|
||||
$MY_PATH/tools/cron_VRFY.sh ON
|
||||
~/.zen/Astroport.ONE/tools/cron_VRFY.sh ON
|
||||
|
||||
########################################################################
|
||||
# SUDO permissions
|
||||
|
@ -213,6 +232,8 @@ echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/apt-get" | (sudo su -c 'EDITOR="tee" vis
|
|||
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/apt" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/apt')
|
||||
## USED FOR "systemctl restart ipfs"
|
||||
echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
|
||||
## USED FOR "systemctl restart ipfs"
|
||||
echo "$USER ALL=(ALL) NOPASSWD:/usr/local/bin/youtube-dl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/youtube-dl')
|
||||
|
||||
## brother_ql_print
|
||||
echo "$USER ALL=(ALL) NOPASSWD:/usr/local/bin/brother_ql_print" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/brother_ql_print')
|
||||
|
@ -223,6 +244,7 @@ echo "# ADDING <<<Astroport>>> DESKTOP SHORTCUT"
|
|||
[[ -d ~/Desktop ]] && sed "s/_USER_/$USER/g" ~/.zen/Astroport.ONE/astroport.desktop > ~/Desktop/astroport.desktop && chmod +x ~/Desktop/astroport.desktop
|
||||
|
||||
mkdir -p ~/.zen/tmp
|
||||
|
||||
echo "#############################################"
|
||||
|
||||
## SYMLINK youtube-dl TO yt-dlp
|
||||
|
@ -231,7 +253,7 @@ which youtube-dl
|
|||
echo "#############################################"
|
||||
echo "#############################################"
|
||||
## Desktop install
|
||||
echo "Astroport.ONE"
|
||||
echo "Astroport.ONE INSTALL"
|
||||
end=`date +%s`
|
||||
echo Execution time was `expr $end - $start` seconds.
|
||||
echo "#############################################"
|
||||
|
@ -253,7 +275,7 @@ Connectez-vous sur https://gchange.fr avec vos identifiants
|
|||
|
||||
$(cat ~/.zen/game/players/.current/secret.june)
|
||||
|
||||
http://astroport.com
|
||||
Powered by https://astroport.com
|
||||
"
|
||||
# MAIN #
|
||||
fi
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
[ $(id -u) -eq 0 ] && echo "LANCEMENT root INTERDIT. Utilisez un simple utilisateur du groupe \"sudo\" SVP" && exit 1
|
||||
|
||||
# Download & decompress
|
||||
mkdir ~/.zen/tmp
|
||||
cd ~/.zen/tmp
|
||||
wget https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
|
||||
tar -xvzf kubo_v0.16.0_linux-amd64.tar.gz
|
||||
cd kubo
|
||||
|
||||
# Install
|
||||
sudo bash install.sh
|
||||
|
||||
# Test & clean
|
||||
[[ $(ipfs --version) ]] \
|
||||
&& rm -Rf ~/.zen/tmp/kubo*
|
|
@ -18,3 +18,7 @@ for friendnode in $(cat ~/.zen/game/players/*/FRIENDS/*/.astronautens | uniq);
|
|||
|| echo "UNCONNECTED $friendnode"
|
||||
ipfs swarm peers | grep $friendnode
|
||||
done
|
||||
|
||||
ipfs stats dht wan
|
||||
|
||||
echo "TODO : search for bootstrap and friends better connectivity"
|
||||
|
|
64
start.sh
64
start.sh
|
@ -4,7 +4,7 @@
|
|||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`dirname \"$0\"`"
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
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])/")
|
||||
|
@ -14,11 +14,16 @@ ME="${0##*/}"
|
|||
TS=$(date -u +%s%N | cut -b1-13)
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
echo "(RE)STARTING 12345.sh"
|
||||
###################################################
|
||||
killall 12345.sh; killall "_12345.sh"; killall nc; killall tail; mkdir -p ~/.zen/tmp
|
||||
killall 12345.sh; killall "_12345.sh"; killall nc
|
||||
mkdir -p ~/.zen/tmp
|
||||
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
|
||||
tail -f ~/.zen/tmp/12345.log &
|
||||
echo "1234 PORT SPIDER http://$myIP:1234"
|
||||
|
||||
sleep 1
|
||||
echo "HTTP API : http://$myIP:1234"
|
||||
cat ~/.zen/tmp/12345.log
|
||||
echo "API DEBUG : tail -f ~/.zen/tmp/12345.log"
|
||||
###################################################
|
||||
|
||||
echo '
|
||||
|
@ -45,8 +50,8 @@ IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
|||
echo 'PRESS ENTER... '; read
|
||||
|
||||
## CREATE AND OR CONNECT USER
|
||||
PS3='Créez VISA ou connectez-vous à votre compte Astronaute ___ '
|
||||
players=("NOUVEAU VISA" "IMPORT GCHANGE" $(ls ~/.zen/game/players 2>/dev/null))
|
||||
PS3='Astronaute connectez votre PLAYER ___ '
|
||||
players=("NOUVEAU VISA" "IMPORT PLAYER" $(ls ~/.zen/game/players 2>/dev/null))
|
||||
## MULTIPLAYER
|
||||
|
||||
select fav in "${players[@]}"; do
|
||||
|
@ -57,12 +62,14 @@ echo 'PRESS ENTER... '; read
|
|||
echo "Astronaute $fav bienvenue dans le jeu de terraformation forêt jardin MadeInZion"
|
||||
exit
|
||||
;;
|
||||
"IMPORT GCHANGE")
|
||||
echo "Saisissez votre 'identifiant Gchange'"
|
||||
"IMPORT PLAYER")
|
||||
echo "'Identifiant'"
|
||||
read SALT
|
||||
echo "Saisissez votre 'mot de passe Gchange'"
|
||||
echo "'Mot de passe'"
|
||||
read PEPPER
|
||||
${MY_PATH}/tools/VISA.new.sh "$SALT" "$PEPPER"
|
||||
echo "'Adresse Email'"
|
||||
read EMAIL
|
||||
${MY_PATH}/tools/VISA.new.sh "$SALT" "$PEPPER" "$EMAIL"
|
||||
fav=$(cat ~/.zen/tmp/PSEUDO 2>/dev/null) && rm ~/.zen/tmp/PSEUDO
|
||||
echo "Astronaute $fav heureux de vous acceuillir"
|
||||
exit
|
||||
|
@ -79,25 +86,24 @@ echo 'PRESS ENTER... '; read
|
|||
PLAYER=$fav
|
||||
|
||||
|
||||
rm -f ~/.zen/game/players/.current
|
||||
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
|
||||
|
||||
pass=$(cat ~/.zen/game/players/.current/.pass 2>/dev/null)
|
||||
|
||||
pass=$(cat ~/.zen/game/players/$PLAYER/.pass 2>/dev/null)
|
||||
########################################## DEVEL
|
||||
echo "Saisissez votre PASS -- UPGRADE CRYPTO FREELY -- $pass" && read pass
|
||||
echo "Saisissez votre PASS -- UPGRADE CRYPTO FREELY -- $pass" && read PASS
|
||||
|
||||
## DECODE CURRENT PLAYER CRYPTO
|
||||
echo "********* DECODAGE SecuredSocketLayer *********"
|
||||
rm -f ~/.zen/tmp/${PLAYER}.dunikey 2>/dev/null
|
||||
openssl enc -aes-256-cbc -d -in "$HOME/.zen/game/players/.current/enc.secret.dunikey" -out "$HOME/.zen/tmp/${PLAYER}.dunikey" -k $pass 2>&1>/dev/null
|
||||
[[ ! $? == 0 ]] && echo "ERROR. MAUVAIS PASS. EXIT" && exit 1
|
||||
# echo "********* DECODAGE SecuredSocketLayer *********"
|
||||
# rm -f ~/.zen/tmp/${PLAYER}.dunikey 2>/dev/null
|
||||
# openssl enc -aes-256-cbc -d -in "$HOME/.zen/game/players/${PLAYER}/enc.secret.dunikey" -out "$HOME/.zen/tmp/${PLAYER}.dunikey" -k $pass 2>&1>/dev/null
|
||||
[[ $PASS != $pass ]] && echo "ERROR. MAUVAIS PASS. EXIT" && exit 1
|
||||
|
||||
rm -f ~/.zen/game/players/.current
|
||||
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
|
||||
|
||||
echo "________LOGIN OK____________";
|
||||
echo
|
||||
echo "DECHIFFRAGE CLEFS ASTRONAUTE"
|
||||
echo "Votre Pass Astroport.ONE : $(cat ~/.zen/game/players/.current/.pass 2>/dev/null)"
|
||||
G1PUB=$(cat ~/.zen/tmp/${PLAYER}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
echo "Votre Pass Astroport.ONE : $(cat ~/.zen/game/players/$PLAYER/.pass 2>/dev/null)"
|
||||
G1PUB=$(cat ~/.zen/game/players/$PLAYER/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[ ! ${G1PUB} ] && echo "ERROR. MAUVAIS PASS. EXIT" && exit 1
|
||||
|
||||
echo "Clef Publque Astronaute : $G1PUB"
|
||||
|
@ -105,7 +111,7 @@ echo "ENTREE ACCORDEE"
|
|||
echo
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w "$PLAYER" | cut -d ' ' -f 1)
|
||||
|
||||
echo "$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null) TW/Moa"
|
||||
echo "$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) TW/Moa"
|
||||
echo "http://$myIP:8080/ipns/$ASTRONAUTENS"
|
||||
echo "Activation Réseau P2P Astroport !"
|
||||
|
||||
|
@ -121,7 +127,7 @@ select fav in "${choices[@]}"; do
|
|||
|
||||
"EXPORTER VISA")
|
||||
echo "EXPORT IDENTITE ASTRONAUTE"
|
||||
du -h ~/.zen/game/players/.current/
|
||||
du -h ~/.zen/game/players/$PLAYER/
|
||||
echo "MANUAL BACKUP ZIP ~/.zen/game/players/$PLAYER/"
|
||||
## EXPORT TW + VOEUX IPNS KEYS
|
||||
|
||||
|
@ -138,11 +144,13 @@ select fav in "${choices[@]}"; do
|
|||
ipfs key rm $voeu
|
||||
[[ $voeu != "" ]] && rm -Rf ~/.zen/game/world/$voeu
|
||||
done
|
||||
echo "REMOVE GCHANGE PROFILE"
|
||||
$MY_PATH/tools/jaklis/jaklis.py -k $HOME/.zen/game/players/$PLAYER/secret.dunikey -n https://data.gchange.fr erase
|
||||
echo "REMOVE CESIUM+"
|
||||
$MY_PATH/tools/jaklis/jaklis.py -k $HOME/.zen/game/players/$PLAYER/secret.dunikey -n https://g1.data.e-is.pro erase
|
||||
echo "rm -Rf ~/.zen/game/players/$PLAYER"
|
||||
$MY_PATH/tools/jaklis/jaklis.py -k $HOME/.zen/tmp/${PLAYER}.dunikey -n https://data.gchange.fr erase
|
||||
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -k $HOME/.zen/tmp/${PLAYER}.dunikey -n https://g1.data.e-is.pro erase
|
||||
|
||||
rm -Rf ~/.zen/game/players/$PLAYER
|
||||
|
||||
break
|
||||
;;
|
||||
|
||||
|
@ -173,7 +181,7 @@ select fav in "${choices[@]}"; do
|
|||
;;
|
||||
|
||||
"IMPRIMER QRVOEU")
|
||||
${MY_PATH}/tools/VOEUX.print.sh
|
||||
${MY_PATH}/tools/VOEUX.print.sh $PLAYER
|
||||
;;
|
||||
|
||||
"QUITTER")
|
||||
|
|
|
@ -1 +1 @@
|
|||
[{"title":"$:/ipfs/saver/api/http/local/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://127.0.0.1:5001"}]
|
||||
[{"title":"$:/ipfs/saver/api/http/local/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://ipfs.localhost:5001"}]
|
||||
|
|
|
@ -1 +1 @@
|
|||
[{"title":"$:/ipfs/saver/gateway/local/myip","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://127.0.0.1:8080"}]
|
||||
[{"title":"$:/ipfs/saver/gateway/local/myip","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://ipfs.localhost:8080"}]
|
||||
|
|
|
@ -42,13 +42,13 @@ html {
|
|||
<h1>Astroport</h1>
|
||||
|
||||
<h2>Internet Reboot !<br>Inscrivez-vous<br>
|
||||
<form id="formlink" action = "http://127.0.0.1:1234" method = "GET">
|
||||
<form id="formlink" action = "http://127.0.0.1:1234" method = "GET" enctype="application/x-www-form-urlencoded">
|
||||
<br>
|
||||
<b>Associez 2 phrases clefs et votre adresse email</b></br></br>
|
||||
<b>Activez votre BunkerBOX</b></br></br>
|
||||
Phrase 1 : <input name=salt value=''></br>
|
||||
Phrase 2 : <input name=pepper value=''></br></br>
|
||||
Bitswap Ŋ1 (délégation de clef à 20h12) : <input type="checkbox" id="g1pub" name="g1pub" checked></br>
|
||||
- Email -</br><input name=email value=''></br></br>
|
||||
URL : <input name=g1pub value=''></br>
|
||||
Email : <input name=email value=''></br></br>
|
||||
<input type='submit' value='(☼‿‿☼)'>
|
||||
</form>
|
||||
</h2>
|
||||
|
@ -60,7 +60,7 @@ html {
|
|||
<article>
|
||||
<div class="row justify-center">
|
||||
<h1 class="video-title">
|
||||
<a href="https://git.p2p.legal/qo-op/Astroport.ONE" target="code">'ASTROŊAUTE'. Insérez vos clefs. Activez le niveau Ŋ1. Explorez les toiles confiances.</a>. <br>
|
||||
<a href="https://git.p2p.legal/qo-op/Astroport.ONE" target="code">'ASTROŊAUTE' : Astroport.ONE - BunkerBOX edition -</a>. <br>
|
||||
<a target="code" href="http://opencollective.com/monnaie-libre/projects/bunker-box">Copiez, conservez, partagez, diffusez vos chaines multimédia et json dans IPFS, entre amis!<br>
|
||||
Prenez possession de votre TW. Rendez in-censurable, in-arrêtable la liberté d'expression.</a>
|
||||
</h1>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -31,61 +31,68 @@ PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null)
|
|||
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/
|
||||
|
||||
## Directory is created, So this script already run once.
|
||||
if [[ ! -d ~/.zen/game/players/${PLAYER}/FRIENDS/ ]]; then
|
||||
## VERIFY IT HAS ALREADY RUN
|
||||
if [[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/cesium.json ]]; then
|
||||
## GET GCHANGE PROFIL
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" get > ~/.zen/game/players/${PLAYER}/ipfs/gchange.json
|
||||
|
||||
NAME=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.title')
|
||||
## KEEPING ALREADY EXISTING PROFILE DATA
|
||||
NAME=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.title' 2>/dev/null)
|
||||
[[ ! $NAME || $NAME == "null" ]] && NAME="Astronaute ${PSEUDO}"
|
||||
|
||||
DESCR=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.description')
|
||||
[[ ! $DESCR || $DESCR == "null" ]] && DESCR="Astronaute explorateur Ŋ1"
|
||||
DESCR=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.description' 2>/dev/null)
|
||||
[[ ! $DESCR || $DESCR == "null" ]] && DESCR="ASTROPORT Ŋ1 https://g1jeu.ml"
|
||||
|
||||
VILLE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.city')
|
||||
VILLE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.city' 2>/dev/null)
|
||||
[[ ! $VILLE || $VILLE == "null" ]] && VILLE="Paris, 75012"
|
||||
|
||||
ADRESSE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.address')
|
||||
ADRESSE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.address' 2>/dev/null)
|
||||
[[ ! $ADRESSE || $ADRESSE == "null" ]] && ADRESSE="Elysée"
|
||||
|
||||
# POSITION=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.geoPoint')
|
||||
SITE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.socials')
|
||||
# SITE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.socials' 2>/dev/null)
|
||||
|
||||
########################################################################
|
||||
echo "${PLAYER} GCHANGE+ PROFILE https://gchange.fr"
|
||||
echo "set -n "${NAME}" -d "${DESCR}" -v "${VILLE}" -a "${ADRESSE}""
|
||||
# echo "set -n "${NAME}" -d "${DESCR}" -v "${VILLE}" -a "${ADRESSE}""
|
||||
########################################################################
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" set -n "${NAME}" -d "${DESCR}" -v "${VILLE}" -a "${ADRESSE}" -s "http://tube.copylaradio.com:8080/ipns/$ASTRONAUTENS" #GCHANGE+
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" set -n "${NAME}" -d "${DESCR}" -v "${VILLE}" -a "${ADRESSE}" -s "https://ipfs.copylaradio.com/ipns/$ASTRONAUTENS" #GCHANGE+
|
||||
[[ ! $? == 0 ]] && echo "GCHANGE PROFILE CREATION FAILED"
|
||||
|
||||
## GET CESIUM
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://g1.data.presles.fr" get > ~/.zen/game/players/${PLAYER}/ipfs/cesium.json
|
||||
## SET CESIUM WALLET
|
||||
########################################################################
|
||||
echo "${PLAYER} CESIUM+ PROFILE https://demo.cesium.app/#/app/wot/lg?q=$G1PUB"
|
||||
########################################################################
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://g1.data.presles.fr" set -n "${NAME}" -d "${DESCR}" -v "${VILLE}" -a "${ADRESSE}" --s "http://127.0.0.1:8080/ipns/$ASTRONAUTENS" #CESIUM+
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://g1.data.e-is.pro" set -n "${NAME}" -d "${DESCR}" -v "${VILLE}" -a "${ADRESSE}" --s "http://ipfs.localhost:8080/ipns/$ASTRONAUTENS" #CESIUM+
|
||||
[[ ! $? == 0 ]] && echo "CESIUM PROFILE CREATION FAILED"
|
||||
|
||||
fi
|
||||
|
||||
## GET PROFILE BACK
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" get > ~/.zen/game/players/${PLAYER}/ipfs/gchange.json
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://g1.data.e-is.pro" get > ~/.zen/game/players/${PLAYER}/ipfs/cesium.json
|
||||
|
||||
########################################################################
|
||||
|
||||
echo "########################################################################"
|
||||
echo "SCANNING ${PLAYER} - $G1PUB - Gchange FRIENDS"
|
||||
echo "### ${PLAYER} ##########################################################"
|
||||
echo "SCANNING - $G1PUB Gchange FRIENDS"
|
||||
echo "########################################################################"
|
||||
################## CHECKING WHO GAVE ME STARS
|
||||
################## BOOTSTRAP LIKES THEM BACK
|
||||
################## SEND ipfstryme MESSAGES to FRIENDS
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/my_star_level
|
||||
## Getting Gchange liking_me list
|
||||
echo "Getting received stars"
|
||||
echo "Checking received stars"
|
||||
################################## JAKLIS PLAYER stars
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
~/.zen/Astroport.ONE/tools/jaklis/jaklis.py \
|
||||
-k ~/.zen/game/players/${PLAYER}/secret.dunikey \
|
||||
-n "https://data.gchange.fr" stars > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json | jq -r '.likes[].issuer' | uniq > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/liking_me
|
||||
echo "cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json | jq -r"
|
||||
[[ ! $(cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json | jq -r '.likes[].issuer') ]] && echo "Niveau Ŋ0 - Activez le niveau de confiance Ŋ1" && exit 0
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json | jq -r '.likes[].issuer' | sort | uniq > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/liking_me
|
||||
# echo "cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json | jq -r" # DEBUG
|
||||
|
||||
for liking_me in $(cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/liking_me | sort | uniq);
|
||||
do
|
||||
|
@ -97,14 +104,13 @@ do
|
|||
echo "TW ? http://tube.copylaradio.com:8080/ipns/$ASTRONAUTENS "
|
||||
|
||||
##### CHECKING IF WE LIKE EACH OTHER Ŋ1 LEVEL
|
||||
echo "Receiving Stars : cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json | jq -r"
|
||||
################################## JAKLIS LIKING_ME stars
|
||||
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
|
||||
~/.zen/Astroport.ONE/tools/jaklis/jaklis.py \
|
||||
-k ~/.zen/game/players/${PLAYER}/secret.dunikey \
|
||||
-n "https://data.gchange.fr" \
|
||||
stars -p ${liking_me} > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json
|
||||
|
||||
echo "Got Stars - DEBUG - cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json | jq -r"
|
||||
## ZOMBIE PROTECTION
|
||||
[[ "$?" == "0" && ! -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json ]] && rm -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me} && echo "${liking_me} is a ZOMBIE..." && continue
|
||||
|
||||
|
@ -127,30 +133,54 @@ do
|
|||
cp ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/ && rm -f ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json
|
||||
echo "$my_star_level" > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/stars.level && echo "***** $my_star_level STARS *****"
|
||||
|
||||
## GET FRIEND GCHANGE PROFILE
|
||||
${MY_PATH}/timeout.sh -t 20 \
|
||||
${MY_PATH}/jaklis/jaklis.py get \
|
||||
-p ${liking_me} > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/gchange.json
|
||||
|
||||
FRIENDTITLE=$(cat ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/gchange.json | jq -r '.title')
|
||||
|
||||
## GET FRIEND TW !!
|
||||
echo "Getting latest online TW..."
|
||||
echo "Getting $FRIENDTITLE latest online TW..."
|
||||
YOU=$(ipfs swarm peers >/dev/null 2>&1 && echo "$USER" || ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
echo "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
echo "http://$myIP:8080/ipns/$ASTRONAUTENS ($YOU)"
|
||||
[[ $YOU ]] && ipfs --timeout 12s cat /ipns/$ASTRONAUTENS > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html ]] && curl -m 12 -so ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
[[ $YOU ]] && ipfs --timeout 17s cat /ipns/$ASTRONAUTENS > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html ]] && curl -m 17 -so ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html "$LIBRA/ipns/$ASTRONAUTENS"
|
||||
|
||||
## PLAYER TW EXISTING ?
|
||||
if [ ! -s ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html ]; then
|
||||
|
||||
# # # # # # # # # # # # # # #
|
||||
## AUCUN VISA ASTRONAUTE ENVOYER UN MESSAGE PAR GCHANGE
|
||||
echo "AUCUN TW ACTIF. ENVOYONS LUI UN MESSAGE..."
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" send -d "${liking_me}" -t "SALUT. Je suis sur Astroport. Tu viens." -m "Active ton TW avec moi : http://libra.copylaradio.com:1234 - DEV MODE -"
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" send -d "${liking_me}" -t "HEY BRO !" -m ">>> (◕‿‿◕) <<< https://ipfs.copylaradio.com/ipns/$ASTRONAUTENS >>> (◕‿‿◕) <<< ACTIVE TON TW ICI : https://astroport.copylaradio.com"
|
||||
|
||||
else
|
||||
|
||||
echo "COOL MON AMI PUBLIE SUR IPFS"
|
||||
ls -al ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html
|
||||
# # # # # # # # # # # # # # # TODO
|
||||
# CHECK Dessin de Moa ?? (DIS)CONNECT PLAYERS
|
||||
# # # # # # # # # # # # # # #
|
||||
echo "COOL MON AMI EST SUR IPFS"
|
||||
FTW="~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html"
|
||||
|
||||
tiddlywiki --load ${FTW} --output ~/.zen/tmp --render '.' "${liking_me}.MadeInZion.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
[[ ! -s ~/.zen/tmp/${liking_me}.MadeInZion.json ]] && echo "~~~ BROKEN $FTW (☓‿‿☓) ~~~" && continue
|
||||
FPLAYER=$(cat ~/.zen/tmp/${liking_me}.MadeInZion.json | jq -r .[].player)
|
||||
[[ ! $FPLAYER ]] && echo "NO PLAYER = BAD MadeInZion Tiddler" && continue
|
||||
|
||||
## CREATING 30 DAYS RSS STREAM
|
||||
tiddlywiki --load ${FTW} \
|
||||
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${FPLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]]'
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.rss.json ]] && echo "NO ${FPLAYER} RSS - CONTINUE -" && continue
|
||||
|
||||
## ADD THIS FPLAYER RSS FEED INTO PLAYER TW
|
||||
## PUSH DATA TO 12345 SWARM KEY
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}
|
||||
cp -f ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.rss.json ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/${FPLAYER}.rss.json
|
||||
|
||||
## TODO INSERT INTO $:/plugins/astroport/lightbeams/state/subscriptions
|
||||
|
||||
|
||||
echo "APP=RSS : PLAYER FPLAYER RSS PUBLICATION READY"
|
||||
echo "~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/${FPLAYER}.rss.json"
|
||||
|
||||
fi
|
||||
|
||||
|
@ -158,26 +188,21 @@ do
|
|||
# SCRAPING DONNE LE BON COIN
|
||||
# https://www.leboncoin.fr/recherche?text=donne&locations=Toulouse__43.59743304757555_1.4471155185604894_10000_5000&owner_type=private&sort=time&donation=1
|
||||
|
||||
|
||||
|
||||
## Get Ŋ2 LEVEL
|
||||
echo "(°▃▃°) (°▃▃°) (°▃▃°) Ŋ2 scraping ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/friend_of_friend.json"
|
||||
for nid in $(cat ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/${liking_me}.Gstars.json | jq -r '.likes[].issuer');
|
||||
do
|
||||
|
||||
echo "Ami(s) de cet Ami $linking_me : $nid"
|
||||
friend_of_friend=$(cat ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/${liking_me}.Gstars.json | jq -r '.likes[] | select(.issuer | strings | test("'$nid'"))')
|
||||
echo "$friend_of_friend" | jq -r > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/friend_of_friend.json
|
||||
echo "$friend_of_friend" | jq -r > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/FoF_$nid.json
|
||||
|
||||
done
|
||||
|
||||
echo "***** Keep G1/IPNS conversion *****"
|
||||
echo ${G1PUB} > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/${ASTRONAUTENS}
|
||||
|
||||
else
|
||||
|
||||
echo "$my_star_level ETOILES RECUES ($gscore). Relayons sa politesse."
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" send -d "${G1PUB}" -t "$my_star_level ETOILES RECUES ($gscore)" -m "https://www.gchange.fr/#/app/user/${liking_me}/ VOTRE RETOUR ?"
|
||||
echo "LIKING LATER."
|
||||
echo "ARE WE BRO?"
|
||||
$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n "https://data.gchange.fr" send -d "${G1PUB}" -t "Bro ?" -m "https://www.gchange.fr/#/app/user/${liking_me}/"
|
||||
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,56 +1,65 @@
|
|||
#!/bin/bash
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
ASTRONAUTENS="$1"
|
||||
MOATS="$2"
|
||||
|
||||
[[ ! $ASTRONAUTENS || ! $MOATS ]] && echo "ASTRONAUTENS & MOATS needed" && exit 1
|
||||
[[ ! $ASTRONAUTENS || ! $MOATS ]] && echo "${ME} : ASTRONAUTENS & MOATS needed" && exit 1
|
||||
|
||||
start=$(date +%s)
|
||||
IPFSNODEID=$(ipfs id -f='<id>\n') || ( echo "IPFSNODEID MISSING" && exit 1 )
|
||||
IPFSNODEID=$(ipfs id -f='<id>\n') || ( echo "${ME} : IPFSNODEID MISSING" && exit 1 )
|
||||
TUBE=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 3)
|
||||
|
||||
## GETTING LAST TW via IPFS
|
||||
echo "ipfs --timeout 12s cat /ipns/${ASTRONAUTENS}"\
|
||||
echo "${ME} : IPFS : ipfs --timeout 12s cat /ipns/${ASTRONAUTENS}"\
|
||||
&& ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/coucou/${MOATS}.astroindex.html
|
||||
|
||||
## GETTING LAST TW via HTTP
|
||||
[[ ! -s ~/.zen/tmp/coucou/${MOATS}.astroindex.html ]] \
|
||||
&& echo "$TUBE/ipns/${ASTRONAUTENS}" \
|
||||
&& curl -m 12 -so ~/.zen/tmp/coucou/${MOATS}.astroindex.html "$TUBE/ipns/${ASTRONAUTENS}"
|
||||
|| curl -m 1 -so ~/.zen/tmp/${MOATS}.html "$TUBE/ipns/${ASTRONAUTENS}"
|
||||
&& echo "${ME} : WWW : $TUBE/ipns/${ASTRONAUTENS}" \
|
||||
&& curl -m 12 -so ~/.zen/tmp/coucou/${MOATS}.astroindex.html "$TUBE/ipns/${ASTRONAUTENS}" \
|
||||
|| curl -m 1 -so ~/.zen/tmp/${MOATS}.html "$TUBE/ipns/${ASTRONAUTENS}" ## Ask caching
|
||||
|
||||
### GOT TW !!
|
||||
if [[ -s ~/.zen/tmp/coucou/${MOATS}.astroindex.html ]]; then
|
||||
echo "GOT TW !!"
|
||||
echo "${ME} : GOT TW !!"
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' ${MOATS}'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}MadeInZion.json ]] && echo "BAD TW (☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}MadeInZion.json ]] && echo "${ME} : BAD TW (☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
|
||||
|
||||
PLAYER=$(cat ~/.zen/tmp/${MOATS}MadeInZion.json | jq -r .[].player)
|
||||
|
||||
## EMAIL STYLE
|
||||
if [[ "${PLAYER}" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
echo "VALID PLAYER (✜‿‿✜) $PLAYER "
|
||||
echo "${ME} : VALID PLAYER (✜‿‿✜) $PLAYER "
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' ${MOATS}'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}Astroport.json ]] && echo "BAD TW (☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
|
||||
espeak "Hello. $(cat ~/.zen/tmp/${MOATS}Astroport.json | jq -r .[].pseudo) Happy to Help you."
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}Astroport.json ]] && echo "${ME} : BAD TW (☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
|
||||
|
||||
## EXPORT PLAYER VALUE TO CALLING SCRIPT
|
||||
export PLAYER=$PLAYER
|
||||
|
||||
else
|
||||
echo "BAD PLAYER"
|
||||
echo "KO ${PLAYER} : (#__#) '" && exit 1
|
||||
echo "${ME} : BAD PLAYER"
|
||||
echo "${ME} : KO ${PLAYER} : (#__#) '" && exit 1
|
||||
fi
|
||||
|
||||
## IN CACHE
|
||||
echo "CACHING ~/.zen/tmp/$IPFSNODEID/$PLAYER/"
|
||||
echo "${ME} : CACHING ~/.zen/tmp/$IPFSNODEID/$PLAYER/"
|
||||
mkdir -p ~/.zen/tmp/$IPFSNODEID/$PLAYER/
|
||||
cp -f ~/.zen/tmp/coucou/${MOATS}.astroindex.html ~/.zen/tmp/$IPFSNODEID/$PLAYER/index.html
|
||||
|
||||
### NO TW !!
|
||||
else
|
||||
|
||||
echo "(-__-) NOTHING (-__-)"
|
||||
echo "${ME} : (-__-) NOTHING (-__-)"
|
||||
|
||||
fi
|
||||
echo "TW.cache.sh (0‿‿0) Execution time was "`expr $(date +%s) - $start` seconds.
|
||||
|
||||
dur=`expr $(date +%s) - $start`
|
||||
[[ $XDG_SESSION_TYPE == 'x11' ]] && espeak "$dur seconds for $(cat ~/.zen/tmp/${MOATS}Astroport.json | jq -r .[].pseudo) TW caching"
|
||||
|
||||
echo "${ME} : (0‿‿0) Execution time was $dur seconds."
|
||||
exit 0
|
||||
|
|
|
@ -5,90 +5,102 @@
|
|||
# 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##*/}"
|
||||
|
||||
! ipfs swarm peers >/dev/null 2>&1 && echo "Lancez 'ipfs daemon' SVP" && exit 1
|
||||
################################################################################
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}
|
||||
|
||||
SALT="$1"
|
||||
PEPPER="$2"
|
||||
PLAYER="$3"
|
||||
PSEUDO="$4"
|
||||
|
||||
|
||||
## Fill UP TW with VIDEO URL
|
||||
URL="$5"
|
||||
################################################################################
|
||||
YOU=$(ipfs swarm peers >/dev/null 2>&1 && echo "$USER" || ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
################################################################################
|
||||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||
################################################################################
|
||||
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])/")
|
||||
[[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
|
||||
################################################################################
|
||||
|
||||
## LOCAL
|
||||
## CHECK if PLAYER resolve any ASTRONAUTENS
|
||||
[[ ${PLAYER} ]] && ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1)
|
||||
[[ ${ASTRONAUTENS} ]] && echo "IPNS $PLAYER EXISTANT http://$myIP:8080/${ASTRONAUTENS} !! DO NOTHING - EXIT -" && exit 0
|
||||
|
||||
## Chargement TW !!!
|
||||
if [[ $SALT != "" && PEPPER != "" ]]; then
|
||||
ASTRO=""
|
||||
echo "$SALT"
|
||||
echo "$PEPPER"
|
||||
ipfs key rm gchange 2>/dev/null
|
||||
rm -f ~/.zen/tmp/gchange.key
|
||||
${MY_PATH}/keygen -t ipfs -o ~/.zen/tmp/gchange.key "$SALT" "$PEPPER"
|
||||
ASTRONAUTENS=$(ipfs key import gchange -f pem-pkcs8-cleartext ~/.zen/tmp/gchange.key )
|
||||
echo "/ipns/${ASTRONAUTENS}"
|
||||
|
||||
mkdir -p ~/.zen/tmp/TW
|
||||
rm -f ~/.zen/tmp/TW/index.html
|
||||
${MY_PATH}/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/player.key "$SALT" "$PEPPER" 2>/dev/null
|
||||
ASTRONAUTENS=$(ipfs key import ${MOATS} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/player.key 2>/dev/null)
|
||||
# echo "/ipns/${ASTRONAUTENS}"
|
||||
|
||||
## GLOBAL
|
||||
## GETTING LAST TW via IPFS or HTTP GW
|
||||
[[ $YOU ]] && echo "http://$myIP:8080/ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 30s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/TW/index.html
|
||||
[[ ! -s ~/.zen/tmp/TW/index.html ]] && echo "$LIBRA/ipns/${ASTRONAUTENS}" && curl -m 30 -so ~/.zen/tmp/TW/index.html "$LIBRA/ipns/${ASTRONAUTENS}"
|
||||
ipfs key rm ${MOATS} 2>/dev/null ## CLEANING
|
||||
|
||||
if [ ! -s ~/.zen/tmp/TW/index.html ]; then
|
||||
rm -f ~/.zen/tmp/TW/index.html
|
||||
echo "Aucun ancien TW détecté! CREATION DU TW Astronaute" ## Compte Gchange
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/TW
|
||||
|
||||
## GETTING LAST TW via IPFS or HTTP GW
|
||||
[[ $YOU ]] \
|
||||
&& ipfs --timeout 20s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|
||||
&& curl -m 20 -so ~/.zen/tmp/${MOATS}/TW/index.html "$LIBRA/ipns/${ASTRONAUTENS}"
|
||||
|
||||
#############################################
|
||||
## AUCUN RESULTAT
|
||||
if [ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]; then
|
||||
|
||||
rm -f ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
echo "CREATION TW Astronaute" ## Nouveau Compte Astronaute
|
||||
|
||||
else
|
||||
#############################################
|
||||
# TW : DATA TESTING & CACHE
|
||||
rm -f ~/.zen/tmp/${MOATS}/Astroport.json
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
|
||||
|
||||
# EXTRACTION & UPDATE myIP
|
||||
rm -f ~/.zen/tmp/miz.json
|
||||
tiddlywiki --load ~/.zen/tmp/TW/index.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
OLDIP=$(cat ~/.zen/tmp/miz.json | jq -r .[].secret)
|
||||
IPNSTAIL=$(echo $ASTROPORT | rev | cut -f 1 -d '/' | rev)
|
||||
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
|
||||
|
||||
[[ $IPNSTAIL == $IPFSNODEID ]] \
|
||||
&& echo "UPDATING $PLAYER LOCAL CACHE ~/.zen/game/players/$PLAYER/ipfs/moa" \
|
||||
&& mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa \
|
||||
&& cp ~/.zen/tmp/${MOATS}/TW/index.html ~/.zen/game/players/$PLAYER/ipfs/moa/ \
|
||||
|| echo "PLAYER on $ASTROPORT Station"
|
||||
|
||||
echo "TW OFFICIAL GATEWAY : http://$OLDIP:8080//ipns/${ASTRONAUTENS}"
|
||||
if [[ ! -d ~/.zen/game/players/$PLAYER/ipfs/moa ]]; then
|
||||
echo "UPDATE $PLAYER LOCAL COPY ~/.zen/game/players/$PLAYER/ipfs/moa"
|
||||
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa
|
||||
[[ "$myIP" == "$OLDIP" ]] && cp ~/.zen/tmp/TW/index.html ~/.zen/game/players/$PLAYER/ipfs/moa/
|
||||
fi
|
||||
# DO NOT CONTINUE
|
||||
echo "VISA ALREADY EXISTS"
|
||||
echo "VISA ALREADY EXISTING"
|
||||
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
TWMODEL="/ipfs/bafybeihk2xserdii7wcnvojbyuyxx6qzlcgtzvraeucpyrhcfwy2ssvbhu"
|
||||
##################################################### # NEW PLAYER ###############
|
||||
################################################################################
|
||||
echo "=============================================
|
||||
MadeInZion DIPLOMATIC PASSPORT
|
||||
ASTROPORT DIPLOMATIC PASSPORT - MadeInZion VISA -
|
||||
=============================================
|
||||
A cryptographic key pair to control your P2P Digital Life.
|
||||
Solar Punk garden forest terraforming game.
|
||||
A Cryptographic Key to control your INTERNET
|
||||
Adventure & Exploration P2P Terraforming Game.
|
||||
=============================================
|
||||
Bienvenue 'Astronaute'"; sleep 1
|
||||
|
||||
echo "Création de votre PSEUDO, votre PLAYER, avec PASS (6 chiffres)"
|
||||
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
! ipfs swarm peers >/dev/null 2>&1 && echo "Lancez 'ipfs daemon' SVP" && exit 1
|
||||
echo "Création de votre PLAYER, votre PSEUDO et PASS (6 chiffres)"
|
||||
|
||||
[[ $SALT == "" ]] && SALT=$(${MY_PATH}/diceware.sh 4 | xargs)
|
||||
echo "-> SALT : $SALT"
|
||||
|
@ -105,7 +117,7 @@ PSEUDO=${PSEUDO%%[0-9]*}
|
|||
|
||||
# PSEUDO=${PSEUDO,,} #lowercase
|
||||
[[ ! $PLAYER ]] && PLAYER=${PSEUDO}${RANDOM:0:2}$(${MY_PATH}/diceware.sh 1 | xargs)${RANDOM:0:2} \
|
||||
&& echo "$PLAYER ! A quelle adresse email vous joindre ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER
|
||||
&& echo "$PLAYER ! VOTRE EMAIL SVP ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER
|
||||
[[ -d ~/.zen/game/players/$PLAYER ]] && echo "FATAL ERROR $PLAYER NAME COLLISION. TRY AGAIN." && exit 1
|
||||
|
||||
[[ ! $PSEUDO ]] && PSEUDO=$PLAYER
|
||||
|
@ -163,25 +175,30 @@ G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
|||
PASsec=$(cat /tmp/enc.${PSEUDO}.sec | base58) && rm -f /tmp/${PSEUDO}.sec
|
||||
qrencode -s 12 -o $HOME/.zen/game/players/$PLAYER/QRsec.png $PASsec
|
||||
|
||||
echo "Clef publique G1 est : $G1PUB"; sleep 1
|
||||
echo "Votre Clef publique G1 est : $G1PUB"; sleep 1
|
||||
|
||||
### INITALISATION WIKI dans leurs répertoires de publication IPFS
|
||||
############ TODO améliorer templates, sed, ajouter index.html, etc...
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
echo
|
||||
echo "***** Gestion du Canal TW Astronaute $PLAYER *****"
|
||||
echo "***** Activation du Canal TW Astronaute $PLAYER *****"
|
||||
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa/
|
||||
|
||||
[[ -f ~/.zen/tmp/TW.html ]] && cp ~/.zen/tmp/TW.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html && echo "Restoring TW...." \
|
||||
|| cp ~/.zen/Astroport.ONE/templates/twdefault.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
cp ~/.zen/Astroport.ONE/templates/twdefault.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
# GET OLD VALUE
|
||||
# INSERT ASTROPORT ADRESS
|
||||
tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html --output ~/.zen/tmp --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/Astroport.json | jq -r .[].astroport)
|
||||
sed -i "s~$ASTROPORT~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
# TW CHAIN INIT WITH TWMODEL
|
||||
sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
sed -i "s~_CHAIN_~${TWMODEL}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~_URL_~${URL}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
# INSERT PLAYER DATA
|
||||
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
sed -i "s~_WISHKEY_~${G1PUB}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
@ -195,25 +212,27 @@ G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
|||
# La Clef IPNS porte comme nom G1PUB
|
||||
sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
sed -i "s~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
sed -i "s~ipfs.infura.io~tube.copylaradio.com~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~ipfs.infura.io~ipfs.copylaradio.com~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html # USELESS ?!
|
||||
|
||||
#
|
||||
sed -i "s~127.0.0.1~$myIP~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html # 8080 & 5001 BEING THE RECORDING GATEWAY (WAN or ipfs.localhost)
|
||||
|
||||
#
|
||||
echo "# CRYPTO ENCODING myIP -> CRYPTIP"
|
||||
echo "# CRYPTO ENCODING secret.dunikey -> TW _SECRET_ "
|
||||
echo $myIP > ~/.zen/tmp/myIP
|
||||
$MY_PATH/natools.py encrypt -p $G1PUB -i $HOME/.zen/tmp/myIP -o $HOME/.zen/tmp/myIP.$G1PUB.enc
|
||||
CRYPTIP=$(cat ~/.zen/tmp/myIP.$G1PUB.enc | base16)
|
||||
sed -i "s~_SECRET_~$CRYPTIP~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
$MY_PATH/natools.py encrypt -p $G1PUB -i $HOME/.zen/game/players/$PLAYER/secret.dunikey -o $HOME/.zen/tmp/secret.dunikey.$G1PUB.enc
|
||||
ENCODING=$(cat ~/.zen/tmp/secret.dunikey.$G1PUB.enc | base16)
|
||||
sed -i "s~_SECRET_~$ENCODING~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
|
||||
#
|
||||
echo "# CRYPTO DECODING CRYPTIP -> myIP"
|
||||
echo "# CRYPTO DECODING TEST"
|
||||
tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html --output ~/.zen/tmp --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
cat ~/.zen/tmp/MadeInZion.json | jq -r .[].secret | base16 -d > ~/.zen/tmp/myIP.$G1PUB.enc.2
|
||||
$MY_PATH/natools.py decrypt -f pubsec -k $HOME/.zen/game/players/$PLAYER/secret.dunikey -i $HOME/.zen/tmp/myIP.$G1PUB.enc.2 -o $HOME/.zen/tmp/myIP.2
|
||||
#
|
||||
## CRYPTO PROCESS VALIDATED
|
||||
[[ -s ~/.zen/tmp/myIP.2 ]] && echo "$myIP _SECRET_ CRYPTIP SECURED" \
|
||||
|| sed -i "s~$CRYPTIP~$myIP~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html # Revert to plaintext _SECRET_ myIP
|
||||
[[ -s ~/.zen/tmp/myIP.2 ]] && echo "NATOOLS ENCODED secret LOADED" \
|
||||
|| sed -i "s~$ENCODING~$myIP~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html # Revert to plaintext _SECRET_ myIP
|
||||
|
||||
rm -f ~/.zen/tmp/myIP.2
|
||||
|
||||
|
@ -233,7 +252,7 @@ G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
|||
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/.current/QRsec.png /tmp/one.png /tmp/image.png
|
||||
|
||||
convert -gravity northwest -pointsize 35 -fill black -draw "text 50,300 \"$PSEUDO\"" /tmp/one.png /tmp/image.png
|
||||
convert -gravity northwest -pointsize 30 -fill black -draw "text 300,40 \"$PLAYER\"" /tmp/image.png /tmp/pseudo.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,40 \"$PLAYER\"" /tmp/image.png /tmp/pseudo.png
|
||||
convert -gravity northeast -pointsize 25 -fill black -draw "text 20,180 \"$PASS\"" /tmp/pseudo.png /tmp/pass.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,100 \"$SALT\"" /tmp/pass.png /tmp/salt.png
|
||||
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,140 \"$PEPPER\"" /tmp/salt.png ~/.zen/game/players/$PLAYER/ID.png
|
||||
|
@ -269,22 +288,19 @@ G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
|||
echo "$SALT" > ~/.zen/game/players/$PLAYER/secret.june
|
||||
echo "$PEPPER" >> ~/.zen/game/players/$PLAYER/secret.june
|
||||
|
||||
rm -f ~/.zen/game/players/.current
|
||||
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
|
||||
qrencode -s 12 -o "$HOME/.zen/game/players/$PLAYER/QR.ASTRONAUTENS.png" "https://ipfs.copylaradio.com/ipns/${ASTRONAUTENS}"
|
||||
|
||||
qrencode -s 12 -o "$HOME/.zen/game/players/$PLAYER/QR.ASTRONAUTENS.png" "http://127.0.0.1:8080/ipns/${ASTRONAUTENS}"
|
||||
|
||||
echo; echo "Création de votre clef et QR codes de votre réseau Astroport Ŋ1"; sleep 1
|
||||
echo; echo "Création de votre Clef et QR codes d'accès au niveau Astroport Ŋ1"; sleep 1
|
||||
|
||||
echo; echo "*** HOME : ~/.zen/game/players/$PLAYER/"; sleep 1
|
||||
echo "*** IPNS Ŋ0 KEY : $PLAYER";
|
||||
echo; echo "GW : http://$myIP:8080/ipns/${ASTRONAUTENS}"; sleep 1
|
||||
echo "*** PLAYER : $PLAYER";
|
||||
echo; echo "GW : https://ipfs.copylaradio.com/ipns/${ASTRONAUTENS}"; sleep 1
|
||||
|
||||
# PASS CRYPTING KEY
|
||||
echo; echo "Sécurisation de vos clefs par chiffrage SSL... "; sleep 1
|
||||
openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/secret.june" -out "$HOME/.zen/game/players/$PLAYER/enc.secret.june" -k $PASS 2>/dev/null
|
||||
openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/secret.dunikey" -out "$HOME/.zen/game/players/$PLAYER/enc.secret.dunikey" -k $PASS 2>/dev/null
|
||||
openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/$KEYFILE -out" "$HOME/.zen/game/players/$PLAYER/enc.$KEYFILE" -k $PASS 2>/dev/null
|
||||
#~ echo; echo "Sécurisation de vos clefs... "; sleep 1
|
||||
#~ openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/secret.june" -out "$HOME/.zen/game/players/$PLAYER/enc.secret.june" -k $PASS 2>/dev/null
|
||||
#~ openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/secret.dunikey" -out "$HOME/.zen/game/players/$PLAYER/enc.secret.dunikey" -k $PASS 2>/dev/null
|
||||
#~ openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/$KEYFILE -out" "$HOME/.zen/game/players/$PLAYER/enc.$KEYFILE" -k $PASS 2>/dev/null
|
||||
## TODO MORE SECURE ?! USE opengpg, natools, etc ...
|
||||
# ${MY_PATH}/natools.py encrypt -p $G1PUB -i ~/.zen/game/players/$PLAYER/secret.dunikey -o "$HOME/.zen/game/players/$PLAYER/enc.secret.dunikey"
|
||||
echo
|
||||
|
|
|
@ -7,6 +7,8 @@ MY_PATH="`dirname \"$0\"`" # relative
|
|||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
PLAYER=$1
|
||||
|
||||
[[ $PLAYER == "" ]] && PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
|
||||
[[ $PLAYER == "" ]] && echo "PLAYER manquant" && exit 1
|
||||
PSEUDO=$(cat ~/.zen/game/players/$PLAYER/.pseudo 2>/dev/null)
|
||||
|
@ -26,7 +28,7 @@ echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
|||
## EXTRACT G1Voeu from PLAYER TW
|
||||
echo "Exporting $PLAYER TW [tag[G1Voeu]]"
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
|
||||
tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html --output ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 1
|
||||
|
||||
|
@ -36,8 +38,6 @@ echo "VOEUX : ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt "
|
|||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
|
||||
|
||||
exit
|
||||
|
||||
for v in $(cat ~/.zen/game/players/*/voeux/*/.title); do
|
||||
g1pub=$(grep -r $v ~/.zen/game/players/*/voeux/ 2>/dev/null | rev | cut -d '/' -f 2 | rev )
|
||||
# echo "$v : $g1pub"
|
||||
|
|
|
@ -26,6 +26,9 @@ $(basename "$0") old scraping"
|
|||
exit 2
|
||||
}
|
||||
|
||||
# IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/
|
||||
|
||||
## CHOOSE kodi.${OLD}log
|
||||
[[ $1 == "old" ]] && OLD='old.' || OLD=''
|
||||
|
@ -41,44 +44,26 @@ do
|
|||
echo "########################################################################"
|
||||
echo "MANUAL : uqload_downloader https://uqload.com/$uqlink \"$HOME/Astroport/$uqname.mp4\""
|
||||
|
||||
## ADD TO ASTROPORT
|
||||
# IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||
NODEG1PUB=$(${MY_PATH}/ipfs_to_g1.py ${IPFSNODEID})
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/
|
||||
|
||||
## CREATE APPNAME IPNS KEY (CREATE ONE BY FRIENDS SHARING COPY TASK) HACKING_QUEST TODO Make a better key generation
|
||||
[[ ! -f ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/keygen.ipns.key.enc.b16 ]] \
|
||||
&& ${MY_PATH}/keygen -t ipfs -o ~/.zen/tmp/publish.key "$uqlink" "$IPFSNODEID" \
|
||||
&& ${MY_PATH}/natools.py encrypt -p ${NODEG1PUB} -i ~/.zen/tmp/publish.key -o ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/keygen.ipns.key.enc \
|
||||
&& cat ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/keygen.ipns.key.enc | base16 > ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/keygen.ipns.key.enc.b16
|
||||
|
||||
[[ ! $(cat ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/commands.fifo | grep -w "$uqname.mp4") ]] && \
|
||||
! cat ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/commands.fifo | grep -w "$uqname.mp4" && \
|
||||
echo "uqload_downloader https://uqload.com/$uqlink \"$HOME/Astroport/$uqname.mp4\"" >> ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/commands.fifo || \
|
||||
echo "$uqname.mp4 conflict"
|
||||
|
||||
## CHECK & MANAGE COPY
|
||||
if [[ $(find $HOME/astroport -name "$uqname*" -type f -print) ]];
|
||||
if [[ $(find $HOME/Astroport -name "$uqname*" -type f -print) ]];
|
||||
then
|
||||
echo "COPY ALREADY IN $HOME/Astroport/"
|
||||
continue
|
||||
else
|
||||
echo "DETECTED MOVIE : $uqname (https://uqload.com/$uqlink)"
|
||||
echo "WANT TO COPY ? Yes? Write any character + enter, else just hit enter."
|
||||
read YESNO
|
||||
if [[ "$YESNO" != "" ]]; then
|
||||
## COPY STREAMING
|
||||
echo "DETECTED MOVIE : $uqname (https://uqload.com/$uqlink)"
|
||||
uqload_downloader https://uqload.com/$uqlink "$HOME/Astroport/$uqname.mp4"
|
||||
echo "COPY ~/Astroport/$uqname.mp4 DONE"
|
||||
## ARE WE ASTROPORT STATION? https://astroport.com
|
||||
[[ "$USER" != "xbian" && ${IPFSNODEID} ]] && ~/.zen/astrXbian/ajouter_video.sh
|
||||
else
|
||||
continue
|
||||
fi
|
||||
echo "COPY ~/astroport/$uqname.mp4 DONE"
|
||||
## ARE WE RUNNING ON ASTROPORT STATION?
|
||||
[[ ${IPFSNODEID} && -d ~/.zen/Astroport.ONE/ ]] && ~/.zen/Astroport.ONE/ajouter_media.sh
|
||||
fi
|
||||
done
|
||||
echo
|
||||
echo "########################################################################"
|
||||
[[ $cycle == 1 && ! ${OLD} ]] && echo "NOTHING IN CURRENT LOG, TRY old ?" && read OLD && [[ "$OLD" != "" ]] && $MY_PATH/$SCRIPT old
|
||||
echo "DONE... VideoClub Datacenter Virtuel entre amis. https://copylaradio.com"
|
||||
echo "DONE... VideoClub Datacenter Virtuel entre amis."
|
||||
echo "ASTROPORT. Le web des gens."
|
||||
exit 0
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.2
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
# Activate SUPPORT MODE: open ssh over IPFS
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
########################################################################
|
||||
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) || er+=" ipfs daemon not running"
|
||||
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) || er+=" ipfs id problem"
|
||||
[[ "$YOU" == "" || "$IPFSNODEID" == "" ]] && echo "ERROR : $er " && exit 1
|
||||
########################################################################
|
||||
|
||||
# Make Station publish SSH port on "/x/ssh-$(hostname)"
|
||||
zuid="$(hostname)"
|
||||
if [[ $zuid ]]
|
||||
then
|
||||
if [[ ! $(cat ~/.ssh/authorized_keys | grep "fred@ONELOVE") ]]
|
||||
then
|
||||
echo "# ADD fred@ONELOVE to ~/.ssh/authorized_keys"
|
||||
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFLHW8P88C/B7622yXzdAn1ZcTBfE1A4wMqajBwAoHwUVTOUaYfvkiSxbzb5H9dPTAXhQU6ZfuLa70kTo1m2b9TKH0tD6hR3RiKJ0NIjCHYEypcPGpLmHaZWnBKPq3IUU24qFVdUJxnTkDdFUszYMNoV4nqlXY/ZYdNpic8L1jPPyfOLLfPFkuSxagyQj4FGJq77UQE5j+skMJS3ISkazNTLqOCGLFJ5qtBC11BvQaCJ4cQ2Ss7ejPYhpx16NLJfg9VtG4dv9ZebEIl2pf7niiQGSPrDMFWHuQcGAuHt/patr0BcvfvD3Gv+qNsVfAJCNZ2U5NHEMKIhgj1ilNPEw7 fred@ONELOVE" >> ~/.ssh/authorized_keys
|
||||
fi
|
||||
echo "Lanching /x/ssh-$zuid"
|
||||
[[ ! $(ipfs p2p ls | grep "/x/ssh-$zuid") ]] && ipfs p2p listen /x/ssh-$zuid /ip4/127.0.0.1/tcp/22
|
||||
# echo "echo \"ssh-$zuid local port please?\"; read lport; ipfs p2p forward /x/ssh-$zuid /ip4/127.0.0.1/tcp/$lport /p2p/$IPFSNODEID" >> ~/.zen/tmp/$IPFSNODEID/astroport/port
|
||||
fi
|
||||
|
||||
ipfs p2p ls
|
||||
|
||||
## CONNECT WITH COMMAND
|
||||
## ipfs cat /ipns/$IPFSNODEID/.$IPFSNODEID/x_ssh-$zuid.sh | bash
|
||||
rm ~/.zen/tmp/$IPFSNODEID/x_ssh-$zuid.sh >/dev/null 2>&1
|
||||
if [[ ! -f ~/.zen/tmp/$IPFSNODEID/x_ssh-$zuid.sh ]]; then
|
||||
PORT=12345
|
||||
[ ${PORT} -eq 12345 ] && PORT=$((PORT+${RANDOM:0:3})) || PORT=$((PORT-${RANDOM:0:3}))
|
||||
echo "[[ ! \$(ipfs p2p ls | grep x/ssh-$zuid) ]] && ipfs --timeout=5s ping -n 1 /p2p/$IPFSNODEID && ipfs p2p forward /x/ssh-$zuid /ip4/127.0.0.1/tcp/$PORT /p2p/$IPFSNODEID && ssh $USER@127.0.0.1 -p $PORT" > ~/.zen/tmp/$IPFSNODEID/x_ssh-$zuid.sh
|
||||
fi
|
||||
cat ~/.zen/tmp/$IPFSNODEID/x_ssh-$zuid.sh
|
||||
|
||||
## THIS PORT FORWARDING HUB COULD BE MADE MORE CONTROLABLE USING FRIENDSHIP LEVEL & IPFS BALISES
|
||||
|
|
@ -31,7 +31,7 @@ MACHINE_TYPE=`uname -m`
|
|||
# CHECK if daemon is already running
|
||||
if [[ $YOU ]]; then
|
||||
echo "ipfs daemon already running...! Run by $YOU $MACHINE_TYPE"
|
||||
[[ $YOU == $USER]] && echo "Stopping ipfs daemon" && killall ipfs \
|
||||
[[ $YOU == $USER ]] && echo "Stopping ipfs daemon" && killall ipfs \
|
||||
|| (echo "ERROR $YOU is running ipfs, must be $USER" && exit 1)
|
||||
else
|
||||
# INIT ipfs
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Chemin de la clé privé Ḡ1 de l'émetteur, au format PubSec
|
||||
DUNIKEY=/.zen/secret.dunikey
|
||||
DUNIKEY=/.zen/game/players/.current/secret.dunikey
|
||||
|
||||
# Noeud Duniter
|
||||
NODE=https://g1.librelois.fr/gva
|
||||
NODE=https://duniter.pini.fr/gva
|
||||
|
||||
# Adresse du pod Cesium ou Gchange à utiliser
|
||||
#POD=https://g1.data.le-sou.org
|
||||
|
|
|
@ -15,18 +15,22 @@ echo '
|
|||
# \\///
|
||||
# qo-op
|
||||
############# '$MY_PATH/$ME'
|
||||
########################################################################
|
||||
# SEND EMAIL FORGE IT YOUR WAY
|
||||
########################################################################'
|
||||
### PLEASE CHANGE YOUR DOMAIN AND KEY ( OR HELP PAYING TRAFIC ;)
|
||||
## THIS IS A FREE LIMITED ACCOUNT. DO NOT EXAGERATE ;)
|
||||
mail="$1" # EMAIL DESTINATAIRE
|
||||
messfile="$2" # FICHIER A AJOUTER AU CORPS MESSAGE
|
||||
|
||||
[[ ! $1 ]] && mail="support@qo-op.com"
|
||||
|
||||
SUBJECT="[(♥‿‿♥)] Astronaute. Message votre Station Astroport.ONE"
|
||||
MESSAGE="( ◕‿◕)\n\n Bonjour $PLAYER\n\n\n Activez votre TW http://tube.copylaradio.com:1234 .\n\nAstroport\n$IPFSNODEID"
|
||||
messfile="$2" # FICHIER A AJOUTER AU CORPS MESSAGE
|
||||
|
||||
SUBJECT="[(♥‿‿♥)] Station Astroport : $(hostname)"
|
||||
MESSAGE="( ◕‿◕)\n\n Bonjour $PLAYER\n\n UN MESSAGE POUR VOUS.\n\nAstroport\n/ipns/$IPFSNODEID"
|
||||
|
||||
echo "
|
||||
########################################################################
|
||||
# EMAIL $SUBJECT $messfile TO $mail
|
||||
########################################################################"
|
||||
|
||||
|
||||
echo "From: support@g1sms.fr
|
||||
To: EMAIL
|
||||
|
@ -34,7 +38,7 @@ Bcc: support@qo-op.com
|
|||
Subject: SUBJECT
|
||||
MESSAGE
|
||||
" > ~/.zen/tmp/email.txt
|
||||
[[ $messfile && -f $messfile ]] && [[ $(file --mime-type -b $messfile) == 'text/plain' ]] && cat $messfile >> ~/.zen/tmp/email.txt
|
||||
[[ -s $messfile ]] && cat $messfile >> ~/.zen/tmp/email.txt
|
||||
|
||||
|
||||
cat ~/.zen/tmp/email.txt | sed "s~EMAIL~${mail}~g" | sed "s~SUBJECT~${SUBJECT}~g" | sed "s~MESSAGE~${MESSAGE}~g" | ssmtp -v ${mail}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
## Create gifanime ## TODO Search for similarities BEFORE ADD
|
||||
## "(✜‿‿✜) GIFANIME $PROBETIME (✜‿‿✜)"
|
||||
path="$1"
|
||||
file="$2"
|
||||
|
||||
length=${#path}
|
||||
last_char=${path:length-1:1}
|
||||
[[ $last_char != "/" ]] && path="$path/"; :
|
||||
[[ ! -s "${path}${file}" ]] && echo "Nothing Found, please check \"${path}${file}\"" && exit 1
|
||||
|
||||
MIME=$(file --mime-type -b "${path}${file}")
|
||||
|
||||
FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${path}${file}" | cut -d "x" -f 2)
|
||||
RES=${FILE_RES%?}0p
|
||||
|
||||
DURATION=$(ffprobe -i "${path}${file}" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1)
|
||||
DUREE=$(ffprobe -i "${path}${file}" -show_entries format=duration -sexagesimal -v quiet -of csv="p=0"| cut -d '.' -f 1)
|
||||
|
||||
PROBETIME=$(echo "0.618 * $DURATION" | bc -l | cut -d '.' -f 1)
|
||||
[[ ! $PROBETIME ]] && PROBETIME="1.0"
|
||||
|
||||
rm -f ~/.zen/tmp/screen.gif
|
||||
ffmpeg -loglevel quiet -ss $PROBETIME -t 1.6 -loglevel quiet -i "${path}${file}" ~/.zen/tmp/screen.gif
|
||||
ANIMH=$(ipfs add -q ~/.zen/tmp/screen.gif)
|
||||
|
||||
echo "export ANIMH=$ANIMH PROBETIME=$PROBETIME DURATION=$DURATION DUREE=$DUREE RES=$RES MIME=$MIME"
|
||||
exit 0
|
|
@ -69,23 +69,10 @@ MIME=$(file --mime-type -b "${path}${file}")
|
|||
|
||||
############# EXTEND MEDIAKEY IDENTIFATORS https://github.com/NapoleonWils0n/ffmpeg-scripts
|
||||
if [[ $(echo "$MIME" | grep 'video') ]]; then
|
||||
|
||||
FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${path}${file}" | cut -d "x" -f 2)
|
||||
RES=${FILE_RES%?}0p
|
||||
|
||||
DURATION=$(ffprobe -i "${path}${file}" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1)
|
||||
DUREE=$(ffprobe -i "${path}${file}" -show_entries format=duration -sexagesimal -v quiet -of csv="p=0"| cut -d '.' -f 1)
|
||||
|
||||
PROBETIME=$(echo "0.618 * $DURATION" | bc -l | cut -d '.' -f 1)
|
||||
[[ ! $PROBETIME ]] && PROBETIME="1.0"
|
||||
|
||||
## Create gifanime ## TODO Search for similarities BEFORE ADD
|
||||
echo "(✜‿‿✜) GIFANIME (✜‿‿✜)"
|
||||
rm -f ~/.zen/tmp/screen.gif
|
||||
ffmpeg -loglevel quiet -ss $PROBETIME -t 1.6 -loglevel quiet -i "${path}${file}" ~/.zen/tmp/screen.gif
|
||||
ANIMH=$(ipfs add -q ~/.zen/tmp/screen.gif)
|
||||
echo "GIFANIM $PROBETIME : /ipfs/$ANIMH"
|
||||
|
||||
$(${MY_PATH}/make_video_gifanim_ipfs.sh "$path" "$file" | tail -n 1)
|
||||
echo "$DUREE GIFANIM ($PROBETIME) : /ipfs/$ANIMH"
|
||||
fi
|
||||
|
||||
########################################################################
|
||||
|
@ -97,11 +84,10 @@ PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null);
|
|||
[[ ! $PLAYER ]] && echo "(╥☁╥ ) No current player. Please Login" && exit 1
|
||||
|
||||
# NOT CURRENT PLAYER (CHECK FOR TW & KEY
|
||||
[[ $G1PUB != $(cat ~/.zen/game/players/.current/.g1pub 2>/dev/null) ]] \
|
||||
&& [[ $(ipfs key list -l | grep -v $G1PUB) ]] \
|
||||
[[ $(ipfs key list -l | grep -w $G1PUB) ]] \
|
||||
&& echo "(ᵔ◡◡ᵔ) INVITATION $G1PUB" \
|
||||
&& ASTRONS=$($MY_PATH/tools/g1_to_ipfs.py "$G1PUB") \
|
||||
&& $MY_PATH/tools/TW.cache.sh $ASTRONS $MOATS \
|
||||
&& ASTRONS=$($MY_PATH/g1_to_ipfs.py "$G1PUB") \
|
||||
&& $MY_PATH/TW.cache.sh $ASTRONS $MOATS \
|
||||
|| echo "(╥☁╥ ) I cannot help you"
|
||||
|
||||
########################################################################
|
||||
|
@ -110,7 +96,7 @@ PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null);
|
|||
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}
|
||||
|
||||
### SOURCE IS ~/Astroport/ !!
|
||||
[[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'astroport') ]] && er="Les fichiers sont à placer dans ~/Astroport/ MERCI" && echo "$er" && exit 1
|
||||
[[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'Astroport') ]] && er="Les fichiers sont à placer dans ~/Astroport/ MERCI" && echo "$er" && exit 1
|
||||
|
||||
### TyPE & type & T = related to ~/astroport location of the infile (mimetype subdivision)
|
||||
TyPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/Astroport/... TyPE(film, youtube, mp3, video, page)/ REFERENCE /
|
||||
|
@ -139,20 +125,10 @@ case ${type} in
|
|||
TITLE="${file%.*}"
|
||||
;;
|
||||
page)
|
||||
## DIFFERENT TREATMENT
|
||||
INDEXPREFIX="PAGE_"
|
||||
REFERENCE=$(echo "$path" | cut -d '/' -f 6 )
|
||||
TITLE="${file%.*}"
|
||||
;;
|
||||
mp3)
|
||||
## DIFFERENT TREATMENT
|
||||
INDEXPREFIX="MP3_"
|
||||
REFERENCE=$(echo "$path" | cut -d '/' -f 6 )
|
||||
TITLE=$(echo "$file" | cut -d "&" -f 2-)
|
||||
er="$er | Please use new_mp3_in_astroport.sh ... EXIT"
|
||||
echo "$er"
|
||||
exit 1
|
||||
;;
|
||||
film | serie)
|
||||
INDEXPREFIX="TMDB_"
|
||||
REFERENCE=$(echo "$path" | cut -d '/' -f 6 ) # Path contains TMDB id
|
||||
|
@ -189,11 +165,8 @@ echo ">>>>>>>>>> $MEDIAKEY ($MIME) <<<<<<<<<<<<<<<"
|
|||
# ISSUE11 : https://git.p2p.legal/qo-op/Astroport.ONE/issues/11
|
||||
##########################
|
||||
|
||||
## RUBISH ??
|
||||
########################################################################
|
||||
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/Astroport/kodi/vstream/
|
||||
echo "ADDING ${path}${file} to IPFS "
|
||||
echo "~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/Astroport/kodi/vstream/${PREFIX}ASTRXBIAN"
|
||||
echo "-----------------------------------------------------------------"
|
||||
|
||||
### FILE SIZING ####
|
||||
|
@ -280,17 +253,17 @@ then
|
|||
echo "-------------------- ${MOATS}_ajouter_video.txt -----------------------------"
|
||||
echo "$line"
|
||||
echo "UPDATE ~/Astroport/${TyPE}/${REFERENCE}/ajouter_video.txt"
|
||||
echo "$line" > ~/Astroport/${TyPE}/${REFERENCE}/ajouter_video.txt
|
||||
|
||||
## MOATS TIMESTAMPING
|
||||
cp ~/Astroport/${TyPE}/${REFERENCE}/ajouter_video.txt ~/Astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt
|
||||
echo "$line" > ~/Astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt
|
||||
|
||||
echo "----------------- GETTING METADATA ----------------------"
|
||||
CAT=$(echo "$type" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
|
||||
GENRE=$(cat ~/Astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt | cut -d ';' -f 6 | sed 's/|/ /g' | jq -r '@csv' | sed 's/ /_/g' | sed 's/,/ /g' | sed 's/\"//g' )
|
||||
YEAR=$(cat ~/Astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt | cut -d ';' -f 3 )
|
||||
|
||||
## Adapt TMDB url for season & tag naming
|
||||
[[ $CAT == "Film" ]] && H1="<h1><a target='tmdb' href='https://www.themoviedb.org/movie/"${REFERENCE}"'>"${TITLE}"</a></h1>" \
|
||||
[[ $CAT == "Film" ]] \
|
||||
&& TITLE="$TITLE ($YEAR)" \
|
||||
&& H1="<h1><a target='tmdb' href='https://www.themoviedb.org/movie/"${REFERENCE}"'>"${TITLE}"</a></h1>" \
|
||||
&& FILETAG="$CapitalGluedTitle"
|
||||
|
||||
[[ $CAT == "Serie" ]] && H1="<h1><a target='tmdb' href='https://www.themoviedb.org/tv/"${REFERENCE}"'>"${TITLE}"</a></h1>" \
|
||||
|
@ -310,17 +283,10 @@ then
|
|||
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'><source src='/ipfs/"${IPFSID}"' type='"${MIME}"'></video>
|
||||
<br>{{!!duree}}<br>
|
||||
"$H1"
|
||||
<h2>"$DESCRIPTION"</h2>
|
||||
|
||||
<\$button class='tc-tiddlylink'>
|
||||
<\$list filter='[tag[G1${CAT}]]'>
|
||||
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>
|
||||
</\$list>
|
||||
Afficher G1${CAT}
|
||||
</\$button>"
|
||||
<h2>"$DESCRIPTION"</h2>"
|
||||
|
||||
TidType="text/vnd.tiddlywiki" ## MAYBE REAL ONCE TW CAN SHOW ATTACHED IPFS VIDEO (TODO: TESTINGS)
|
||||
TAGS="G1${CAT} ${PLAYER} ${FILETAG} $SAISON $GENRE ipfs ${HASHTAG}"
|
||||
TAGS="G1${CAT} ${PLAYER} ${FILETAG} $SAISON $GENRE ipfs ${HASHTAG} $YEAR"
|
||||
# TyPE="$MIME"
|
||||
# CANON="/ipfs/"${IPFSID}
|
||||
CANON=''
|
||||
|
@ -339,7 +305,7 @@ then
|
|||
echo '[
|
||||
{
|
||||
"text": "'${TEXT}'",
|
||||
"title": "'${CapitalGluedTitle}'",
|
||||
"title": "'${TITLE}'",
|
||||
"season": "'${SAISON}'",
|
||||
"created": "'${MOATS}'",
|
||||
"resolution": "'${RES}'",
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
export {b58,b16, saltPass2seed, seed2keyPair,idSecPass2rawAll, raw2b58, idSecPass2cleanKeys}
|
||||
import {nacl} from "./vendors/nacl.js";
|
||||
|
||||
async function idSecPass2rawAll(idSec,pass) {
|
||||
const rawSeed = await saltPass2seed(idSec,pass);
|
||||
const keyPair = seed2keyPair(rawSeed);
|
||||
return {
|
||||
seed:rawSeed,
|
||||
publicKey:keyPair.publicKey,
|
||||
secretKey:keyPair.secretKey
|
||||
}
|
||||
}
|
||||
function raw2b58(raws){
|
||||
const res = {};
|
||||
for(let r in raws) res[r] = b58.encode(raws[r]);
|
||||
return res;
|
||||
}
|
||||
async function idSecPass2cleanKeys(idSec,pass){
|
||||
const raw = await idSecPass2rawAll(idSec,pass);
|
||||
return Object.assign(raw2b58(raw),{idSec,password:pass});
|
||||
}
|
||||
function seed2keyPair(seed){
|
||||
return nacl.sign.keyPair.fromSeed(seed);
|
||||
}
|
||||
import scrypt from "./vendors/scrypt.js";
|
||||
async function saltPass2seed(idSec,pass) {
|
||||
const options = {
|
||||
logN: 12,
|
||||
r: 16,
|
||||
p: 1,
|
||||
//dkLen: 32,
|
||||
encoding: 'binary'
|
||||
};
|
||||
return await scrypt(pass.normalize('NFKC'), idSec.normalize('NFKC'), options);
|
||||
}
|
||||
//inspired by bs58 and base-x module
|
||||
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
||||
const b58 = basex(ALPHABET);
|
||||
const b16 = basex('0123456789abcdef');
|
||||
function basex (ALPHABET) {
|
||||
const ALPHABET_MAP = {};
|
||||
const BASE = ALPHABET.length;
|
||||
const LEADER = ALPHABET.charAt(0);
|
||||
// pre-compute lookup table
|
||||
for (let z = 0; z < ALPHABET.length; z++) {
|
||||
let x = ALPHABET.charAt(z);
|
||||
if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous');
|
||||
ALPHABET_MAP[x] = z;
|
||||
}
|
||||
function encode (source) {
|
||||
if (source.length === 0) return '';
|
||||
const digits = [0];
|
||||
for (let i = 0; i < source.length; ++i) {
|
||||
let carry = source[i];
|
||||
for (let j = 0; j < digits.length; ++j) {
|
||||
carry += digits[j] << 8;
|
||||
digits[j] = carry % BASE;
|
||||
carry = (carry / BASE) | 0;
|
||||
}
|
||||
while (carry > 0) { digits.push(carry % BASE); carry = (carry / BASE) | 0; }
|
||||
}
|
||||
let string = '';
|
||||
for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) string += LEADER; // deal with leading zeros
|
||||
for (let q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]; // convert digits to a string
|
||||
return string;
|
||||
}
|
||||
|
||||
function decodeUnsafe (string) {
|
||||
if (typeof string !== 'string') throw new TypeError('Expected String');
|
||||
if (string.length === 0) return new Uint8Array(0);
|
||||
const bytes = [0];
|
||||
for (let i = 0; i < string.length; i++) {
|
||||
const value = ALPHABET_MAP[string[i]];
|
||||
if (value === undefined) return ;
|
||||
let carry = value;
|
||||
for (let j = 0; j < bytes.length; ++j) {
|
||||
carry += bytes[j] * BASE;
|
||||
bytes[j] = carry & 0xff;
|
||||
carry >>= 8;
|
||||
}
|
||||
while (carry > 0) { bytes.push(carry & 0xff); carry >>= 8; }
|
||||
}
|
||||
for (let k = 0; string[k] === LEADER && k < string.length - 1; ++k) bytes.push(0); // deal with leading zeros
|
||||
return new Uint8Array(bytes.reverse());
|
||||
}
|
||||
function decode (string) {
|
||||
const buffer = decodeUnsafe(string);
|
||||
if (buffer) return buffer;
|
||||
throw new Error('Non-base' + BASE + ' character')
|
||||
}
|
||||
return { encode, decodeUnsafe, decode }
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>idSec+password or seed or keys => file.dunikey</title>
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="img/favicon.png">
|
||||
<link rel="canonical" href="https://gsper.duniter.io/dunikey.html"/>
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:locale" content="fr_FR" />
|
||||
<meta property="og:title" content="idSec+password or seed or keys => file.dunikey" />
|
||||
<meta property="og:site_name" content="gsper.duniter.io" />
|
||||
<meta property="og:url" content="https://gsper.duniter.io/dunikey.html" />
|
||||
<meta property="og:image" content="https://gsper.duniter.io/img/gsper-logo.png" />
|
||||
<meta property="og:description" content="Converti vos secrets d'authentification pour générer un fichier d'authentification file.dunikey" />
|
||||
<style>
|
||||
* {font-family: sans-serif; box-sizing: border-box; margin: 0; padding: 0}
|
||||
h1{font-weight: normal; width: 100%; text-align: center; line-height: 70px;}
|
||||
fieldset {margin: 10px;}
|
||||
.logic {margin-left: 50px;}
|
||||
input{border: 0; padding: 5px;width: 100%; line-height: 60px; font-size: 16px;}
|
||||
button {width: 100%; height: 32px}
|
||||
.gift {position: absolute; top: 10px; left: 10px;}
|
||||
.gift a{text-decoration-color: rgba(0%,0%,100%,0.2); color: rgba(0%,0%,100%,0.7);}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>DunikeyMaker</h1>
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
<input id="idSec" type="password" placeholder="Identifiant secret"/>
|
||||
<input id="pass" type="password" placeholder="Mot de passe"/>
|
||||
</fieldset>
|
||||
<div class="logic">ou</div>
|
||||
<fieldset>
|
||||
<input id="seed" type="text" placeholder="Seed"/>
|
||||
</fieldset>
|
||||
<div class="logic">ou</div>
|
||||
<fieldset>
|
||||
<input id="secretkey" type="text" placeholder="Clef privée (ou secrète)"/>
|
||||
<input id="pubkey" type="text" placeholder="Clef publique"/>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
<div class="logic">et</div>
|
||||
<fieldset>
|
||||
<input id="filename" type="text" placeholder="Nom du fichier à générer"/>
|
||||
<button id="compute">Générer le fichier .dunikey.yml</button>
|
||||
</fieldset>
|
||||
<div class="gift">
|
||||
<a href="https://cesium.g1.1000i100.fr/#/app/wot/2sZF6j2PkxBDNAqUde7Dgo5x3crkerZpQ4rBqqJGn8QT/1000i100" target="_blank">Ǧ'spère vous avoir été utile.<br/>
|
||||
Soutenez mon travail avec un don !<br/>
|
||||
👤 : 1000i100 🔑 : 2sZF6j2P
|
||||
</a>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="https://git.duniter.org/tools/gsper" id="sourceRibbon" title="Fork me !">
|
||||
<span>AGPL-3.0</span>
|
||||
<span>Logiciel Libre</span>
|
||||
<span>Remonter aux sources</span>
|
||||
<style>
|
||||
#sourceRibbon {position: fixed; top: 15px; right: -110px; z-index: 500; transform: rotate(45deg); text-align: center;width: 300px; box-shadow: 0 0 5px #000; text-decoration: none;}
|
||||
#sourceRibbon span {background-color: #0A0; color: white; font-family: sans-serif; display: block; padding: 1px 30px; font-size: 9pt; margin: -1px; text-shadow: 0 0 3px rgba(0,0,0,.5);}
|
||||
#sourceRibbon span + span {background-color: #06A; font-size: 11pt;}
|
||||
#sourceRibbon span + span + span {background-color: #E80; font-size: 10pt;}
|
||||
</style>
|
||||
</a>
|
||||
</footer>
|
||||
<script type="module" src="dunikey.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,54 @@
|
|||
import * as dKey from "./crypto.js";
|
||||
|
||||
addEventsListeners([
|
||||
document.getElementById("idSec"),
|
||||
document.getElementById("pass"),
|
||||
], "keyup change",
|
||||
async function () {
|
||||
const idSec = document.getElementById("idSec").value;
|
||||
const pass = document.getElementById("pass").value;
|
||||
const keys = await dKey.idSecPass2cleanKeys(idSec, pass);
|
||||
document.getElementById("seed").value = keys.seed;
|
||||
document.getElementById("secretkey").value = keys.secretKey;
|
||||
document.getElementById("pubkey").value = keys.publicKey;
|
||||
|
||||
});
|
||||
addEventsListeners([
|
||||
document.getElementById("seed"),
|
||||
], "keyup change",
|
||||
async function () {
|
||||
let rawSeed;
|
||||
const seed = document.getElementById("seed").value;
|
||||
console.log(seed.length);
|
||||
if (seed.length === 64) rawSeed = dKey.b16.decode(seed);
|
||||
else rawSeed = dKey.b58.decode(seed);
|
||||
const keys = await dKey.seed2keyPair(rawSeed);
|
||||
document.getElementById("secretkey").value = dKey.b58.encode(keys.secretKey);
|
||||
document.getElementById("pubkey").value = dKey.b58.encode(keys.publicKey);
|
||||
});
|
||||
addEventsListeners([
|
||||
document.getElementById("compute"),
|
||||
], "click",
|
||||
async function () {
|
||||
const filename = document.getElementById("filename").value;
|
||||
const secretkey = document.getElementById("secretkey").value;
|
||||
const pubkey = document.getElementById("pubkey").value;
|
||||
exportAsFile(filename, `pub: ${pubkey}\nsec: ${secretkey}`);
|
||||
});
|
||||
|
||||
function exportAsFile(fileName, data) {
|
||||
const a = document.createElement('a');
|
||||
a.setAttribute('download', fileName + '.dunikey.yml');
|
||||
a.setAttribute('href', 'data:text/yaml;charset=utf-8,' + encodeURIComponent(data));
|
||||
clickOn(a);
|
||||
}
|
||||
function clickOn(element) {
|
||||
const event = new MouseEvent('click', {'view': window, 'bubbles': true, 'cancelable': true});
|
||||
element.dispatchEvent(event);
|
||||
}
|
||||
function addEventsListeners(triggerNodes, events, functions) {
|
||||
if (!triggerNodes.length) triggerNodes = [triggerNodes];
|
||||
if (typeof events !== "object") events = events.split(" ");
|
||||
if (typeof functions !== "object") functions = [functions];
|
||||
for (let n of triggerNodes) events.forEach(e => functions.forEach(f => n.addEventListener(e, f)));
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 5.3 KiB |
275
www/index.html
275
www/index.html
|
@ -1,275 +0,0 @@
|
|||
<html class=" rrghhqet idc0_344 cadefrffwk ftnryedt"><head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>Upload files to Astroport</title>
|
||||
<style>
|
||||
a, a:hover, a:visited, a:active {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
body {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
|
||||
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
|
||||
|
||||
background-color: #041d2f;
|
||||
color: #fff;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
width: 500px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
input[type=file] {
|
||||
width: 0.1px;
|
||||
height: 0.1px;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
input[type=file] + label {
|
||||
display: inline-block;
|
||||
|
||||
font-size: 1.25em;
|
||||
font-weight: 700;
|
||||
|
||||
color: #333;
|
||||
background-color: #fff;
|
||||
border-radius: 5px;
|
||||
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
input[type=file]:focus + label,
|
||||
input[type=file] + label:hover {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 500px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
margin: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.informations {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.image {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: 300px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.wrapWithDirectoryContainer {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
margin: 10px;
|
||||
}
|
||||
</style>
|
||||
<script src="ipfs.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<img src="./logo-astroport.png" class="image">
|
||||
|
||||
<div id="informations" class="informations">
|
||||
Téléverser un fichier vers Astroport
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<form>
|
||||
<input id="file" type="file">
|
||||
<label for="file">Choose a file</label>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="wrapWithDirectoryContainer">
|
||||
<input id="wrapWithDirectory" type="checkbox">
|
||||
<label for="wrapWithDirectory">Wrap with a directory (recommended)</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
function cacheIt (appName, hash, nodeId = '') {
|
||||
|
||||
var gatewayProtocol = 'http';
|
||||
|
||||
var gatewayDomain = 'ipfs.localhost';
|
||||
|
||||
var gatewayPort = '1234';
|
||||
|
||||
var salt = 'totodu56';
|
||||
var pepper = 'totodu56';
|
||||
|
||||
var query = 'salt='+ salt
|
||||
query += '&pepper='+ pepper
|
||||
query += '&' + appName
|
||||
query += '&nodeid=' + nodeId
|
||||
query += '&dataid=' + hash;
|
||||
|
||||
var fullURL = 'http://'+ gatewayDomain +':'+ gatewayPort + '/?' + query;
|
||||
console.log(fullURL)
|
||||
|
||||
const controller = new AbortController()
|
||||
const timeoutId = setTimeout( () => {
|
||||
controller.abort()
|
||||
}, 15000)
|
||||
var fetchOpts = {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Accept': 'text/html'
|
||||
// ,'Content-Type': 'text/html'
|
||||
// // ,'Access-Control-Allow-Origin': '*',
|
||||
// ,'Origin': 'la-bureautique'
|
||||
// ,'Referrer-Policy': 'unsafe-url'
|
||||
// ,'Redirect': 'manual'
|
||||
},
|
||||
signal: controller.signal
|
||||
}
|
||||
|
||||
fetch(fullURL, fetchOpts)
|
||||
.then(reponse => {
|
||||
return reponse.text()
|
||||
})
|
||||
.then(html => {
|
||||
// console.log(html)
|
||||
|
||||
var regex = /url='([^']+)/i;
|
||||
var redirectURL = html.match(regex)[1]
|
||||
|
||||
return redirectURL
|
||||
})
|
||||
.then(url => {
|
||||
|
||||
console.log(url)
|
||||
})
|
||||
|
||||
// JSON.stringify(json)
|
||||
}
|
||||
|
||||
async function ipfs_init() {
|
||||
|
||||
const node = await window.IpfsCore.create(
|
||||
|
||||
{
|
||||
config: {
|
||||
Addresses: {
|
||||
Swarm: [
|
||||
'/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star',
|
||||
'/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star'
|
||||
]
|
||||
}
|
||||
},
|
||||
"Discovery": {
|
||||
"MDNS": {
|
||||
"Enabled": false,
|
||||
"Interval": 10
|
||||
},
|
||||
"webRTCStar": {
|
||||
"Enabled": true
|
||||
}
|
||||
},
|
||||
"Bootstrap": [
|
||||
"/dns4/wss0.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmZMxNdpMkewiVZLMRxaNxUeZpDUb34pWjZ1kZvsd16Zic",
|
||||
"/dns4/wss1.bootstrap.libp2p.io/tcp/443/wss/ipfs/Qmbut9Ywz9YEDrz8ySBSgWyJk41Uvm2QJPhwDJzJyGFsD6"
|
||||
]
|
||||
}
|
||||
);
|
||||
|
||||
let nodeId = await node.id();
|
||||
console.log('node id :', nodeId)
|
||||
nodeId = nodeId.id
|
||||
console.log(nodeId)
|
||||
const version = await node.version();
|
||||
console.log('Version:', version.version);
|
||||
|
||||
async function ipfs_upload(file, wrapWithDirectory) {
|
||||
|
||||
const fileAdded = await node.add(
|
||||
{
|
||||
path: file.name,
|
||||
content: file
|
||||
},
|
||||
{
|
||||
wrapWithDirectory,
|
||||
progress: bytesAdded => document.getElementById('informations').innerHTML = `Sending... ${Math.round((bytesAdded / file.size) * 100)}%`
|
||||
}
|
||||
);
|
||||
|
||||
const cid = fileAdded.cid.toString();
|
||||
var salt = 'totodu56';
|
||||
var pepper = 'totodu56';
|
||||
|
||||
document.getElementById('informations').innerHTML = [
|
||||
'Prêt à enregistrer !',
|
||||
'',
|
||||
'Son Hash (CID) est :',
|
||||
`<a href="http://libra.copylaradio.com:1234/?salt=${salt}&pepper=${pepper}&testcraft=on&nodeid=${nodeId}&dataid=${cid}" target="reboot">${cid}</a>`,
|
||||
'(cliquez pour demander enregistrement)'
|
||||
].join('<br />');
|
||||
|
||||
cacheIt('testcraft=on', cid, nodeId)
|
||||
}
|
||||
|
||||
document.getElementById('file').disabled = false;
|
||||
|
||||
document.getElementById('file').addEventListener('change', async event => {
|
||||
|
||||
event.preventDefault();
|
||||
document.getElementById('file').disabled = true;
|
||||
|
||||
const fileInput = document.getElementById('file');
|
||||
|
||||
if (!fileInput.files.length) {
|
||||
|
||||
alert('You have to select a file first');
|
||||
|
||||
} else {
|
||||
|
||||
const wrapWithDirectory = document.getElementById('wrapWithDirectory').checked;
|
||||
|
||||
await ipfs_upload(fileInput.files[0], wrapWithDirectory)
|
||||
.catch(error => alert(error.toString()));
|
||||
}
|
||||
|
||||
document.getElementById('file').disabled = false;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
ipfs_init();
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1 @@
|
|||
dunikey.html
|
|
@ -0,0 +1,275 @@
|
|||
<html class=" rrghhqet idc0_344 cadefrffwk ftnryedt"><head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>Upload files to Astroport</title>
|
||||
<style>
|
||||
a, a:hover, a:visited, a:active {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
body {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
|
||||
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
|
||||
|
||||
background-color: #041d2f;
|
||||
color: #fff;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
width: 500px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
input[type=file] {
|
||||
width: 0.1px;
|
||||
height: 0.1px;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
input[type=file] + label {
|
||||
display: inline-block;
|
||||
|
||||
font-size: 1.25em;
|
||||
font-weight: 700;
|
||||
|
||||
color: #333;
|
||||
background-color: #fff;
|
||||
border-radius: 5px;
|
||||
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
input[type=file]:focus + label,
|
||||
input[type=file] + label:hover {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 500px;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
margin: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.informations {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.image {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: 300px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.wrapWithDirectoryContainer {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
margin: 10px;
|
||||
}
|
||||
</style>
|
||||
<script src="ipfs.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<img src="./logo-astroport.png" class="image">
|
||||
|
||||
<div id="informations" class="informations">
|
||||
Téléverser un fichier vers Astroport
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<form>
|
||||
<input id="file" type="file">
|
||||
<label for="file">Choose a file</label>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="wrapWithDirectoryContainer">
|
||||
<input id="wrapWithDirectory" type="checkbox">
|
||||
<label for="wrapWithDirectory">Wrap with a directory (recommended)</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
function cacheIt (appName, hash, nodeId = '') {
|
||||
|
||||
var gatewayProtocol = 'http';
|
||||
|
||||
var gatewayDomain = 'ipfs.localhost';
|
||||
|
||||
var gatewayPort = '1234';
|
||||
|
||||
var salt = 'totodu56';
|
||||
var pepper = 'totodu56';
|
||||
|
||||
var query = 'salt='+ salt
|
||||
query += '&pepper='+ pepper
|
||||
query += '&' + appName
|
||||
query += '&nodeid=' + nodeId
|
||||
query += '&dataid=' + hash;
|
||||
|
||||
var fullURL = 'http://'+ gatewayDomain +':'+ gatewayPort + '/?' + query;
|
||||
console.log(fullURL)
|
||||
|
||||
const controller = new AbortController()
|
||||
const timeoutId = setTimeout( () => {
|
||||
controller.abort()
|
||||
}, 15000)
|
||||
var fetchOpts = {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Accept': 'text/html'
|
||||
// ,'Content-Type': 'text/html'
|
||||
// // ,'Access-Control-Allow-Origin': '*',
|
||||
// ,'Origin': 'la-bureautique'
|
||||
// ,'Referrer-Policy': 'unsafe-url'
|
||||
// ,'Redirect': 'manual'
|
||||
},
|
||||
signal: controller.signal
|
||||
}
|
||||
|
||||
fetch(fullURL, fetchOpts)
|
||||
.then(reponse => {
|
||||
return reponse.text()
|
||||
})
|
||||
.then(html => {
|
||||
// console.log(html)
|
||||
|
||||
var regex = /url='([^']+)/i;
|
||||
var redirectURL = html.match(regex)[1]
|
||||
|
||||
return redirectURL
|
||||
})
|
||||
.then(url => {
|
||||
|
||||
console.log(url)
|
||||
})
|
||||
|
||||
// JSON.stringify(json)
|
||||
}
|
||||
|
||||
async function ipfs_init() {
|
||||
|
||||
const node = await window.IpfsCore.create(
|
||||
|
||||
{
|
||||
config: {
|
||||
Addresses: {
|
||||
Swarm: [
|
||||
'/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star',
|
||||
'/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star'
|
||||
]
|
||||
}
|
||||
},
|
||||
"Discovery": {
|
||||
"MDNS": {
|
||||
"Enabled": false,
|
||||
"Interval": 10
|
||||
},
|
||||
"webRTCStar": {
|
||||
"Enabled": true
|
||||
}
|
||||
},
|
||||
"Bootstrap": [
|
||||
"/dns4/wss0.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmZMxNdpMkewiVZLMRxaNxUeZpDUb34pWjZ1kZvsd16Zic",
|
||||
"/dns4/wss1.bootstrap.libp2p.io/tcp/443/wss/ipfs/Qmbut9Ywz9YEDrz8ySBSgWyJk41Uvm2QJPhwDJzJyGFsD6"
|
||||
]
|
||||
}
|
||||
);
|
||||
|
||||
let nodeId = await node.id();
|
||||
console.log('node id :', nodeId)
|
||||
nodeId = nodeId.id
|
||||
console.log(nodeId)
|
||||
const version = await node.version();
|
||||
console.log('Version:', version.version);
|
||||
|
||||
async function ipfs_upload(file, wrapWithDirectory) {
|
||||
|
||||
const fileAdded = await node.add(
|
||||
{
|
||||
path: file.name,
|
||||
content: file
|
||||
},
|
||||
{
|
||||
wrapWithDirectory,
|
||||
progress: bytesAdded => document.getElementById('informations').innerHTML = `Sending... ${Math.round((bytesAdded / file.size) * 100)}%`
|
||||
}
|
||||
);
|
||||
|
||||
const cid = fileAdded.cid.toString();
|
||||
var salt = 'totodu56';
|
||||
var pepper = 'totodu56';
|
||||
|
||||
document.getElementById('informations').innerHTML = [
|
||||
'Prêt à enregistrer !',
|
||||
'',
|
||||
'Son Hash (CID) est :',
|
||||
`<a href="http://libra.copylaradio.com:1234/?salt=${salt}&pepper=${pepper}&testcraft=on&nodeid=${nodeId}&dataid=${cid}" target="reboot">${cid}</a>`,
|
||||
'(cliquez pour demander enregistrement)'
|
||||
].join('<br />');
|
||||
|
||||
cacheIt('testcraft=on', cid, nodeId)
|
||||
}
|
||||
|
||||
document.getElementById('file').disabled = false;
|
||||
|
||||
document.getElementById('file').addEventListener('change', async event => {
|
||||
|
||||
event.preventDefault();
|
||||
document.getElementById('file').disabled = true;
|
||||
|
||||
const fileInput = document.getElementById('file');
|
||||
|
||||
if (!fileInput.files.length) {
|
||||
|
||||
alert('You have to select a file first');
|
||||
|
||||
} else {
|
||||
|
||||
const wrapWithDirectory = document.getElementById('wrapWithDirectory').checked;
|
||||
|
||||
await ipfs_upload(fileInput.files[0], wrapWithDirectory)
|
||||
.catch(error => alert(error.toString()));
|
||||
}
|
||||
|
||||
document.getElementById('file').disabled = false;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
ipfs_init();
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</body></html>
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`dirname \"$0\"`"
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
######## YOUTUBE-DL ##########
|
||||
|
|
Loading…
Reference in New Issue