Compare commits

..

No commits in common. "8eda0e1274001588ba6ec6ca4fe4828654917c23" and "8088394bd5f60e3fecef256846177478678dcd36" have entirely different histories.

36 changed files with 674 additions and 1193 deletions

View File

@ -19,7 +19,7 @@ myIP=$(hostname -I | awk '{print $1}' | head -n 1)
isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
[[ $isLAN ]] && myHOST="ipfs.localhost" && myHOSTPort="ipfs.localhost:8080" && myHTTP="http://" && myASTROPORT="http://astroport.localhost:1234" ## LAN STATION [[ $isLAN ]] && myHOST="ipfs.localhost" && myHOSTPort="ipfs.localhost:8080" && myHTTP="http://" && myASTROPORT="http://astroport.localhost:1234" ## LAN STATION
[[ ! $isLAN || $USER == "zen" ]] && myHOST="astroport.copylaradio.com" && myHOSTPort="ipfs.copylaradio.com" && myHTTP="https://" && myASTROPORT="https://astroport.copylaradio.com" ## WAN STATION [[ ! $isLAN ]] && myHOST="astroport.copylaradio.com" && myHOSTPort="ipfs.copylaradio.com" && myHTTP="https://" && myASTROPORT="https://astroport.copylaradio.com" ## WAN STATION
PORT=12345 PORT=12345
@ -31,7 +31,7 @@ mkdir -p ~/.zen/tmp/coucou/
## CHECK FOR ANY ALREADY RUNNING nc ## 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=$(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 - ${myASTROPORT}/?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 ## NOT RUNNING TWICE
# Some client needs to respect that # Some client needs to respect that
@ -80,9 +80,7 @@ while true; do
## CHECK 12345 PORT RUNNING (STATION FoF 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 '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ ! $maprunning ]] \ [[ ! $maprunning ]] && ($MY_PATH/_12345.sh &) && echo '(ᵔ◡◡ᵔ) LAUNCHING '${myHTTP}${myHOST}:'12345 (ᵔ◡◡ᵔ)'
&& echo '(ᵔ◡◡ᵔ) LAUNCHING '${myHTTP}${myHOST}:'12345 (ᵔ◡◡ᵔ)' \
&& exec $MY_PATH/_12345.sh &
############### ACTIVATE USE ON QUICK IPFS DRIVE ############### ACTIVATE USE ON QUICK IPFS DRIVE
### CREATE IPNS KEY - ACTIVATE WHITH ENOUGH BOOTSTRAP ### CREATE IPNS KEY - ACTIVATE WHITH ENOUGH BOOTSTRAP
@ -104,9 +102,7 @@ while true; do
############### ############### ############### ############### templates/index.http ############### ############### ############### ############### templates/index.http
# REPLACE myHOST in http response template (fixing next API meeting point) # 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 "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~http://127.0.0.1:1234~${myASTROPORT}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http sed -i "s~127.0.0.1~${myHOST}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http
sed -i "s~http://127.0.0.1:8080~${myHTTP}${myHOSTPort}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http
sed -i "s~:12345~:${PORT}~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~_SESSIONLNK_~${myHTTP}${myHOSTPort}/ipns/${SESSIONNS}~g" ~/.zen/tmp/coucou/${MOATS}.myHOST.http
@ -123,10 +119,6 @@ while true; do
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2) URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2) HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
HOST=$(echo "$HOSTP" | cut -d ':' -f 1) HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
## TODO APPLY GENERAL isLAN or zen !isLAN CALACULA>TONS
[[ ! $isLAN || $USER == "zen" ]] && myHOST="$HOST" && myHOSTPort="ipfs.$HOST" && myHTTP="https://" && myASTROPORT="https://$HOST" ## WAN STATION
############################################################################ ############################################################################
[[ $URL == "/test" || $URL == "" ]] && continue [[ $URL == "/test" || $URL == "" ]] && continue
@ -148,7 +140,7 @@ while true; do
echo "___________________________ Preparing default return register.html" echo "___________________________ Preparing default return register.html"
echo "$HTTPCORS" > ~/.zen/tmp/coucou/${MOATS}.index.redirect ## HTTP 1.1 HEADER + HTML BODY echo "$HTTPCORS" > ~/.zen/tmp/coucou/${MOATS}.index.redirect ## HTTP 1.1 HEADER + HTML BODY
sed "s~http://127.0.0.1:1234~${myASTROPORT}~g" $HOME/.zen/Astroport.ONE/templates/register.html >> ~/.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~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
sed -i "s~_HOSTNAME_~$(hostname)~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 sed -i "s~http://127.0.0.1:8080~${myHTTP}${myHOSTPort}~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
@ -329,6 +321,8 @@ while true; do
start=`date +%s` start=`date +%s`
## RECORD DATA MADE IN BROWSER (JSON) ## RECORD DATA MADE IN BROWSER (JSON)
SALT=$(urldecode ${arr[1]} | xargs)
PEPPER=$(urldecode ${arr[3]} | xargs)
NODEID=$(urldecode ${arr[7]} | xargs) NODEID=$(urldecode ${arr[7]} | xargs)
DATAID=$(urldecode ${arr[9]} | xargs) DATAID=$(urldecode ${arr[9]} | xargs)
@ -460,6 +454,8 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
start=`date +%s` start=`date +%s`
SALT=$(urldecode ${arr[1]} | xargs)
PEPPER=$(urldecode ${arr[3]} | xargs)
# WHAT can contain urlencoded FullURL # WHAT can contain urlencoded FullURL
EMAIL=$(urldecode ${arr[7]} | xargs) EMAIL=$(urldecode ${arr[7]} | xargs)
PSEUDO=$(urldecode ${arr[9]} | xargs) PSEUDO=$(urldecode ${arr[9]} | xargs)
@ -477,14 +473,13 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
## CREATE PSEUDO FROM ## CREATE PSEUDO FROM
if [[ ! $PSEUDO ]]; then if [[ ! $PSEUDO ]]; then
PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1) PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1)
PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:4} PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:3}
fi fi
if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)" echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)"
( (
startvisa=`date +%s` startvisa=`date +%s`
[[ "$SALT" == "0" && "$PEPPER" == "0" ]] && SALT="" && PEPPER="" # "0" "0" means random salt pepper
echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${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/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 $MY_PATH/tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt ## Send VISA.new log to EMAIL
@ -547,22 +542,21 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
## Astroport.ONE local use QRCODE Contains ${WHAT} G1PUB ## Astroport.ONE local use QRCODE Contains ${WHAT} G1PUB
QRCODE=$(echo $URL | cut -d ' ' -f2 | cut -d '=' -f 2 | cut -d '&' -f 1) && echo "QRCODE : $QRCODE" QRCODE=$(echo $URL | cut -d ' ' -f2 | cut -d '=' -f 2 | cut -d '&' -f 1) && echo "QRCODE : $QRCODE"
g1pubpath=$(grep $QRCODE ~/.zen/game/players/*/.g1pub | cut -d ':' -f 1 2>/dev/null) g1pubpath=$(grep $QRCODE ~/.zen/game/players/*/.g1pub | cut -d ':' -f 1 2>/dev/null)
PLAYER=$(echo "$g1pubpath" | rev | cut -d '/' -f 2 | rev 2>/dev/null) WHAT=$(echo "$g1pubpath" | rev | cut -d '/' -f 2 | rev 2>/dev/null)
## FORCE LOCAL USE ONLY. Remove to open 1234 API ## FORCE LOCAL USE ONLY. Remove to open 1234 API
[[ ! -d ~/.zen/game/players/${PLAYER} || ${PLAYER} == "" ]] && (echo "$HTTPCORS ERROR - QRCODE - NO ${PLAYER} ON BOARD !!" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue [[ ! -d ~/.zen/game/players/${WHAT} || ${WHAT} == "" ]] && (echo "$HTTPCORS ERROR - QRCODE - NO ${WHAT} ON BOARD !!" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
## USE SECOND HTTP SERVER TO RECEIVE PASS ## USE SECOND HTTP SERVER TO RECEIVE PASS
[[ ${arr[2]} == "" ]] && (echo "$HTTPCORS ERROR - QRCODE - MISSING ACTION" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
## Demande de copie d'une URL reçue. ## Demande de copie d'une URL reçue.
if [[ ${arr[2]} == "url" ]]; then if [[ ${arr[2]} == "url" ]]; then
wsource="${arr[3]}" wsource="${arr[3]}"
[[ ${arr[4]} == "type" ]] && CHOICE="${arr[5]}" || CHOICE="Youtube" [[ ${arr[4]} == "type" ]] && wtype="${arr[5]}" || wtype="Youtube"
## CREATION TIDDLER "G1Voeu" G1CopierYoutube ## CREATION TIDDLER "G1Voeu" G1CopierYoutube
# CHOICE = "Video" Page MP3 Web # /.zen/Astropor.ONE/ajouter_media.sh "$(urldecode $wsource)" "$wtype" "$QRCODE" &
~/.zen/Astropor.ONE/ajouter_media.sh "$(urldecode $wsource)" "$PLAYER" "$CHOICE" &
echo "## Insertion tiddler : G1CopierYoutube" echo "## Insertion tiddler : G1CopierYoutube"
echo '[ echo '[
{ {
@ -577,11 +571,6 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
## 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
else
(echo "$HTTPCORS ERROR - ${arr[2]} - ${arr[3]} UNKNOWN" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
fi fi
fi fi

View File

@ -22,7 +22,7 @@ rm -Rf ~/.zen/tmp/*
# echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl') # echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
[[ -s /etc/sudoers.d/systemctl ]] && sudo systemctl restart ipfs && sleep 5 [[ -s /etc/sudoers.d/systemctl ]] && sudo systemctl restart ipfs && sleep 5
espeak "Code Updating" > /dev/null 2>&1 espeak "Ding Ding" > /dev/null 2>&1
## PROCESS TW BACKOFFICE TREATMENT ## PROCESS TW BACKOFFICE TREATMENT
@ -33,18 +33,22 @@ git pull
# Refresh ~/.zen/game/world/G1VOEU # Refresh ~/.zen/game/world/G1VOEU
# NOW RUN FROM PLAYER.refresh.sh !! ~/.zen/Astroport.ONE/ASTROBOT/VOEUX.refresh.sh # NOW RUN FROM PLAYER.refresh.sh !! ~/.zen/Astroport.ONE/ASTROBOT/VOEUX.refresh.sh
## CLOSING API PORT ## CLOSING 1234 API PORT
[[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) killall 12345.sh
killall _12345.sh
killall nc
killall tail
espeak "Ding Ding Ding" > /dev/null 2>&1
espeak "Players refresh" > /dev/null 2>&1
# Refresh ~/.zen/game/players/PLAYER # Refresh ~/.zen/game/players/PLAYER
~/.zen/Astroport.ONE/ASTROBOT/PLAYER.refresh.sh ~/.zen/Astroport.ONE/ASTROBOT/PLAYER.refresh.sh
espeak "Bills Kills Bills" > /dev/null 2>&1
## OPEN API ENGINE ## OPEN API ENGINE
espeak "Restarting API" > /dev/null 2>&1
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log & ~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
PID=$!
echo $PID > ~/.zen/.pid
if [[ ! $isLAN ]]; then if [[ ! $isLAN ]]; then
## REFRESH BOOTSTRAP LIST (OFFICIAL SWARM) ## REFRESH BOOTSTRAP LIST (OFFICIAL SWARM)
@ -56,19 +60,16 @@ if [[ ! $isLAN ]]; then
done done
fi fi
espeak "Tube Up" > /dev/null 2>&1
## Updating yt-dlp ## Updating yt-dlp
$MY_PATH/youtube-dl.sh
sudo youtube-dl -U sudo youtube-dl -U
######################################################################## ########################################################################
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` echo "20H12 (♥‿‿♥) Execution time was "`expr $end - $start` seconds.
echo "20H12 (♥‿‿♥) Execution time was $dur" seconds.
## MAIL LOG : support@qo-op.com ## MAIL LOG : support@qo-op.com
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" $MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log"
espeak "Byte Strom End. $dur seconds" > /dev/null 2>&1 espeak "Byte Storm Over" > /dev/null 2>&1
exit 0 exit 0

View File

@ -24,19 +24,14 @@ INDEX="$1"
[[ ! ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && 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 [[ ! -f ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
PLAYER="$2" WISHKEY="$2" ## IPNS KEY NAME - G1PUB - PLAYER - WISHKEY...
[[ ! $PLAYER ]] && echo "ERROR - Please provide IPFS publish key" && exit 1 [[ ! $WISHKEY ]] && echo "ERROR - Please provide IPFS publish key" && exit 1
TWNS=$(ipfs key list -l | grep -w $WISHKEY | cut -d ' ' -f1)
ASTONAUTENS=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f1) [[ ! $TWNS ]] && echo "ERROR - Clef IPNS $WISHKEY introuvable!" && exit 1
[[ ! $ASTONAUTENS ]] && echo "ERROR - Clef IPNS $PLAYER introuvable!" && exit 1
# Extract tag=tube from TW # Extract tag=tube from TW
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/$IPFSNODEID
###################################################################
## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
###################################################################
mkdir -p $HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/
################################################################### ###################################################################
## tag[CopierYoutube] EXTRACT ~/.zen/tmp/CopierYoutube.json FROM TW ## tag[CopierYoutube] EXTRACT ~/.zen/tmp/CopierYoutube.json FROM TW
@ -48,43 +43,29 @@ tiddlywiki --load ${INDEX} \
echo "DEBUG : cat ~/.zen/tmp/CopierYoutube.json | jq -r" echo "DEBUG : cat ~/.zen/tmp/CopierYoutube.json | jq -r"
BROWSER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
################################################################### ###################################################################
## URL EXTRACTION & yt-dlp.cache.$PLAYER upgrade ## 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/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 "Detected $YURL"
echo "Extracting video playlist into yt-dlp.cache.$PLAYER" echo "Extracting video playlist"
### yt-dlp.command ### yt-dlp.command
CMD=$(cat ~/.zen/tmp/$IPFSNODEID/yt-dlp.command 2>/dev/null | grep "$YURL" | tail -n 1) [[ ! $(cat ~/.zen/tmp/$IPFSNODEID/yt-dlp.command 2>/dev/null | grep "$YURL") ]] \
if [[ ! $CMD ]]; then && echo "$WISHKEY&$YURL" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.command
echo "$PLAYER&$YURL:$MOATS" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.command
echo "NOUVEAU CANAL $PLAYER&$YURL:$MOATS" yt-dlp --print "%(id)s&%(webpage_url)s" "${YURL}" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY
else
lastrun=$(echo "$CMD" | rev | cut -d ':' -f 1 | rev) && echo "$CMD"
duree=$(expr ${MOATS} - $lastrun)
[[ ! $lastrun ]] && echo "$PLAYER&$YURL:$MOATS" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.command && duree=604800000
# ONE WEEK NEW SCAN
if [[ duree -ge 604800000 ]]; then
yt-dlp --cookies-from-browser $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" >> ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$PLAYER
fi
fi
done # FINISH YURL loop done # FINISH YURL loop
## SORT UNIQ ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$PLAYER ## SORT UNIQ CACHE
cat ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$PLAYER | sort | uniq > ~/.zen/tmp/yt-dlp.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.$PLAYER cp ~/.zen/tmp/yt-dlp.cache ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY
## UPDATE GLOBAL WITH PLAYER & SWARM yt-dlp NEEDS
cat ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$PLAYER > ~/.zen/tmp/yt-dlp.${PLAYER}.global ## PUT MINE FIRST
cat ~/.zen/tmp/swarm/*/yt-dlp.cache.* | sort | uniq >> ~/.zen/tmp/yt-dlp.${PLAYER}.global ## ADD SWARM TO GLOBAL
################################################################### ###################################################################
[[ ! -s ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$PLAYER ]] && echo "AUCUN YOUTUBEID pour CopierYoutube" && exit 0 [[ ! -s ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY ]] && echo "AUCUN YOUTUBEID pour CopierYoutube" && exit 0
################################################################### ###################################################################
boucle=0
################################################################### ###################################################################
# PROCESS YOUTUBEID VIDEO DOWNLOAD AND CREATE TIDDLER in TW # PROCESS YOUTUBEID VIDEO DOWNLOAD AND CREATE TIDDLER in TW
################################################################### ###################################################################
@ -97,28 +78,33 @@ while read LINE;
## Search for $YID.TW.json TIDDLER in local & MySwarm cache ## 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=$(ls -t ~/.zen/tmp/$IPFSNODEID/G1CopierYoutube/*/$YID.TW.json 2>/dev/null | head -n 1)
[[ $MATCH ]] \ [[ $MATCH ]] \
&& echo "Local Found Tiddler" && TIDDLER="$MATCH" \ && TIDDLER="$MATCH" \
|| MATCH=$(ls -t ~/.zen/tmp/swarm/*/G1CopierYoutube/*/$YID.TW.json 2>/dev/null | head -n 1) || MATCH=$(ls -t ~/.zen/tmp/swarm/*/G1CopierYoutube/*/$YID.TW.json 2>/dev/null | head -n 1)
[[ $MATCH ]] \ [[ $MATCH ]] \
&& echo "Swarm Found Tiddler" && TIDDLER="$MATCH" && TIDDLER="$MATCH"
################################################################### ###################################################################
###################################################################
## CREATE APP PUBLICATION
###################################################################
mkdir -p $HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/
if [[ ! ${TIDDLER} ]]; then if [[ ! ${TIDDLER} ]]; then
################################################################### ###################################################################
# COPY VIDEO AND MAKE TIDDLER # COPY VIDEO AND MAKE TIDDLER
################################################################### ###################################################################
ZYURL=$(echo "$LINE" | cut -d '&' -f 2-) ZYURL=$(echo "$LINE" | cut -d '&' -f 2-)
echo "COPIE : $ZYURL" echo "COPIE : $ZYURL"
[[ $boucle == 13 ]] && echo "MAXIMUM COPY REACHED" && continue
TITLE="$(yt-dlp --cookies-from-browser $BROWSER --print "%(title)s" "${ZYURL}")" TITLE="$(yt-dlp --print "%(title)s" "${ZYURL}")"
TITLE=${TITLE//[^A-zÀ-ÿ0-9 ]/} TITLE=${TITLE//[^A-zÀ-ÿ0-9 ]/}
[[ ! $TITLE ]] && echo "NO TITLE" && continue [[ ! $TITLE ]] && echo "NO TITLE" && continue
start=`date +%s` echo ".... Downloading $TITLE.mp4"
echo ".... Trying to download $TITLE.mp4"
# https://github.com/yt-dlp/yt-dlp#format-selection-examples # https://github.com/yt-dlp/yt-dlp#format-selection-examples
# SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs # SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
# (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba) # (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba)
@ -131,7 +117,6 @@ if [[ ! ${TIDDLER} ]]; then
# --cookies-from-browser browser (xdg-settings get default-web-browser) allow member copies # --cookies-from-browser browser (xdg-settings get default-web-browser) allow member copies
# --dateafter DATE --download-archive myarchive.txt # --dateafter DATE --download-archive myarchive.txt
yt-dlp -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \ yt-dlp -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
--cookies-from-browser $BROWSER \
--download-archive $HOME/.zen/.yt-dlp.list \ --download-archive $HOME/.zen/.yt-dlp.list \
-S "filesize:700M" --no-mtime --embed-thumbnail --add-metadata \ -S "filesize:700M" --no-mtime --embed-thumbnail --add-metadata \
--write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs \ --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs \
@ -148,10 +133,6 @@ if [[ ! ${TIDDLER} ]]; then
[[ ! -f "$HOME/.zen/tmp/yt-dlp/$ZFILE" ]] && echo "No FILE -- CONTINUE --" && continue [[ ! -f "$HOME/.zen/tmp/yt-dlp/$ZFILE" ]] && echo "No FILE -- CONTINUE --" && continue
echo echo
## LIMIT TO 12 MAXIMUM COPY PER DAY PER PLAYER
boucle=$((boucle+1))
espeak "video copy number $bouche" > /dev/null 1>&2
#################################################### ####################################################
echo "FOUND : ~/.zen/tmp/yt-dlp/$ZFILE" echo "FOUND : ~/.zen/tmp/yt-dlp/$ZFILE"
FILE_BSIZE=$(du -b "$HOME/.zen/tmp/yt-dlp/$ZFILE" | awk '{print $1}') FILE_BSIZE=$(du -b "$HOME/.zen/tmp/yt-dlp/$ZFILE" | awk '{print $1}')
@ -181,16 +162,13 @@ if [[ ! ${TIDDLER} ]]; then
MIME=$(file --mime-type -b "$HOME/.zen/tmp/yt-dlp/$ZFILE") MIME=$(file --mime-type -b "$HOME/.zen/tmp/yt-dlp/$ZFILE")
## ADD TAGS ## ADD TAGS
SEC=$(yt-dlp --cookies-from-browser $BROWSER --print "%(duration)s" "${ZYURL}") SEC=$(yt-dlp --print "%(duration)s" "${ZYURL}")
CHANNEL=$(yt-dlp --cookies-from-browser $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords CHANNEL=$(yt-dlp --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
PLAYLIST=$(yt-dlp --cookies-from-browser $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') PLAYLIST=$(yt-dlp --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
EXTRATAG="$CHANNEL $PLAYLIST" EXTRATAG="$CHANNEL $PLAYLIST"
## PREPARE VIDEO HTML5 CODE ## PREPARE VIDEO HTML5 CODE
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>" 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>"
end=`date +%s`
dur=`expr $end - $start`
echo "Creating Youtube ${YID} tiddler : G1CopierYoutube !" echo "Creating Youtube ${YID} tiddler : G1CopierYoutube !"
echo $TEXT echo $TEXT
@ -209,10 +187,9 @@ if [[ ! ${TIDDLER} ]]; then
"mime": "'${MIME}'", "mime": "'${MIME}'",
"size": "'${FILE_BSIZE}'", "size": "'${FILE_BSIZE}'",
"sec": "'${SEC}'", "sec": "'${SEC}'",
"dur": "'${dur}'",
"ipfs": "'/ipfs/${ILINK}'", "ipfs": "'/ipfs/${ILINK}'",
"youtubeid": "'${YID}'", "youtubeid": "'${YID}'",
"tags": "'ipfs G1CopierYoutube ${PLAYER} ${EXTRATAG} ${MIME}'" "tags": "'ipfs G1CopierYoutube ${WISHKEY} ${EXTRATAG} ${MIME}'"
} }
] ]
' > "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json" ' > "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json"
@ -221,18 +198,17 @@ else
################################################################### ###################################################################
# TIDDLER WAS IN CACHE # TIDDLER WAS IN CACHE
################################################################### ###################################################################
## TODO : ADD EMAIL TO TAG ( TIMESTAMP & ADD SIGNATURE over existing ones)
[[ "${TIDDLER}" != "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json" ]] \ cp "${TIDDLER}" "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json"
&& cp "${TIDDLER}" "$HOME/.zen/tmp/$IPFSNODEID/G1CopierYoutube/$PLAYER/$YID.TW.json"
fi fi
################################################################# #################################################################
### ADDING $YID.TW.json to ASTONAUTENS INDEX.html ### ADDING $YID.TW.json to TWNS INDEX.html
################################################################# #################################################################
echo "==========================" echo "=========================="
echo "Adding $YID tiddler to TW /ipns/$ASTONAUTENS " echo "Adding $YID tiddler to TW /ipns/$TWNS "
rm -f ~/.zen/tmp/$IPFSNODEID/newindex.html rm -f ~/.zen/tmp/$IPFSNODEID/newindex.html
@ -245,13 +221,12 @@ fi
# --deletetiddlers '[tag[CopierYoutube]]' ### REFRESH CHANNEL COPY # --deletetiddlers '[tag[CopierYoutube]]' ### REFRESH CHANNEL COPY
if [[ -s ~/.zen/tmp/$IPFSNODEID/newindex.html ]]; then if [[ -s ~/.zen/tmp/$IPFSNODEID/newindex.html ]]; then
[[ $(diff ~/.zen/tmp/$IPFSNODEID/newindex.html ${INDEX} ) ]] && cp ~/.zen/tmp/$IPFSNODEID/newindex.html ${INDEX} && echo "===> Mise à jour ${INDEX}" echo "$$$ Mise à jour ${INDEX}"
cp ~/.zen/tmp/$IPFSNODEID/newindex.html ${INDEX}
else else
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/$IPFSNODEID/newindex.html" echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/$IPFSNODEID/newindex.html"
echo "XXXXXXXXXXXXXXXXXXXXXXX" echo "XXXXXXXXXXXXXXXXXXXXXXX"
fi fi
done < ~/.zen/tmp/yt-dlp.${PLAYER}.global # FINISH YID loop 1 done < ~/.zen/tmp/$IPFSNODEID/yt-dlp.cache.$WISHKEY # FINISH YID loop 1
exit 0 exit 0

View File

@ -178,7 +178,7 @@ convert -gravity northwest -pointsize 50 -fill black -draw "text 30,300 \"$PEPPE
</\$button>" </\$button>"
# NEW IVEU TIDDLER # NEW IVEU TIDDLER
echo "## Creation json tiddler : G1${PEPPER} /ipfs/${IVOEU}" echo "## Creation json tiddler : Qr${PEPPER} /ipfs/${IVOEU}"
echo '[ echo '[
{ {
"created": "'${MOATS}'", "created": "'${MOATS}'",

View File

@ -12,18 +12,11 @@ ME="${0##*/}"
# Run TAG subprocess: tube, voeu # Run TAG subprocess: tube, voeu
############################################ ############################################
echo "## RUNNING PLAYER.refresh" echo "## RUNNING PLAYER.refresh"
# IPFSNODEID=$(ipfs id -f='<id>\n') IPFSNODEID=$(ipfs id -f='<id>\n')
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
PLAYERONE="$1"
[[ ! $PLAYERONE ]] && PLAYERONE=($(ls -t ~/.zen/game/players/))
## RUNING FOR ALL LOCAL PLAYERS ## RUNING FOR ALL LOCAL PLAYERS
for PLAYER in ${PLAYERONE[@]}; do for PLAYER in $(ls -t ~/.zen/game/players/); do
[[ ! -d ~/.zen/game/players/$PLAYER ]] && echo "BAD $PLAYERONE" && continue
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
[[ $PLAYER == "user" || $PLAYER == "zen" ]] && continue [[ $PLAYER == "user" || $PLAYER == "zen" ]] && continue
mkdir -p ~/.zen/tmp/${MOATS}
echo "##################################################################" echo "##################################################################"
echo ">>>>> PLAYER : $PLAYER >>>>>>>>>>>>> REFRESHING TW STATION" echo ">>>>> PLAYER : $PLAYER >>>>>>>>>>>>> REFRESHING TW STATION"
echo "##################################################################" echo "##################################################################"
@ -49,9 +42,9 @@ for PLAYER in ${PLAYERONE[@]}; do
&& mv ~/.zen/game/players/$PLAYER ~/.zen/game/players/.$PLAYER && continue && mv ~/.zen/game/players/$PLAYER ~/.zen/game/players/.$PLAYER && continue
## MY PLAYER ## MY PLAYER
ipfs key export $G1PUB -o ~/.zen/tmp/${MOATS}/$PLAYER.key ipfs key export $G1PUB -o ~/.zen/tmp/$PLAYER.key
[[ ! $(ipfs key list -l | grep $PLAYER | cut -d ' ' -f1) ]] && ipfs key import $PLAYER ~/.zen/tmp/${MOATS}/$PLAYER.key ipfs key import $PLAYER ~/.zen/tmp/$PLAYER.key
rm -f ~/.zen/tmp/${MOATS}/$PLAYER.key rm -f ~/.zen/tmp/$PLAYER.key
## REFRESH CACHE ## REFRESH CACHE
rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/ rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/
@ -62,12 +55,11 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
[[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost" [[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
echo "Getting latest online TW..." 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) LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
echo "/ipns/$ASTRONAUTENS ON $LIBRA" echo "($YOU) /ipns/$ASTRONAUTENS $LIBRA"
[[ $YOU ]] && ipfs --timeout 30s cat /ipns/$ASTRONAUTENS > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html \
ipfs --timeout 60s -o ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html /ipns/$ASTRONAUTENS \ || curl -m 30 -so ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$LIBRA/ipns/$ASTRONAUTENS"
|| curl -m 30 -so ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$LIBRA/ipns/$ASTRONAUTENS" \
|| cp ~/.zen/game/players/$PLAYER/ipfs/moa/index.html ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html
## PLAYER TW IS ONLINE ? ## PLAYER TW IS ONLINE ?
if [ ! -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html ]; then if [ ! -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html ]; then
@ -87,15 +79,31 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
else else
## FOUND TW ## FOUND TW
############################################################# #############################################################
## CHECK WHO IS ACTUAL OFFICIAL GATEWAY ## CHECK IF myIP IS ACTUAL OFFICIAL GATEWAY
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html --output ~/.zen/tmp --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
[[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json ]] && echo "MadeInZion : BAD TW (☓‿‿☓) " && continue [[ ! -s ~/.zen/tmp/MadeInZion.json ]] && echo "MadeInZion ERROR - DROPPING " && continue
player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player) # 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/game/players/$PLAYER/secret.dunikey -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)
[[ $player == $PLAYER ]] \ [[ ! $GWIP ]] && GWIP=$myIP ## CLEAR
&& echo "$PLAYER OFFICIAL TW - (⌐■_■) -" \
|| ( echo "BAD PLAYER=$player in TW" && continue) echo "THIS TW is on $GWIP"
# WHO IS OFFICIAL TW GATEWAY.
if [[ ! -s ~/.zen/game/players/$PLAYER/ipfs/G1SSB/_g1.pubkey ]]; then
if [[ $GWIP != $myIP ]]; then
# NOT MY PLAYER
echo "REMOVING PLAYER $PLAYER"
rm -Rf ~/.zen/game/players/$PLAYER/
ipfs key rm ${PLAYER}
ipfs key rm ${G1PUB}
echo "*** OFFICIAL GATEWAY : http://$GWIP:8080/ipns/$ASTRONAUTENS ***" && continue
fi
else
echo "OFFICIAL VISA - (⌐■_■) -"
fi fi
############################################################# #############################################################
## GWIP == myIP or TUBE !! ## GWIP == myIP or TUBE !!
@ -119,34 +127,27 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
${MY_PATH}/VOEUX.refresh.sh ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$PLAYER" ${MY_PATH}/VOEUX.refresh.sh ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html "$PLAYER"
############################################################## ##############################################################
################################## ####################
echo "# TW : GW API + LightBeam Feed + Friends" echo "# TUBE as 8080 & 5001"
TUBE=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 3) TUBE=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 3)
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1) ####################
[[ ! $FEEDNS ]] && FEEDNS=$(ipfs key gen "${PLAYER}_feed") echo "# CRYPTO ENCODING $GWIP -> CRYPTIP"
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json echo $GWIP > ~/.zen/tmp/GWIP
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json $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
sed -i "s~$SECRET~$CRYPTIP~g" ~/.zen/tmp/MadeInZion.json
########################### ###########################
# Modification Tiddlers de contrôle de GW & API # Modification Tiddlers de contrôle de GW & API
[[ $isLAN ]] && APIGW="http://ipfs.localhost:5001" && IPFSGW="https://ipfs.copylaradio.com" \ echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://ipfs.localhost:5001"}]' > ~/.zen/tmp/5001.json
|| ( APIGW="https://$(hostname)/api" && IPFSGW="https://ipfs.copylaradio.com" ) echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"https://ipfs.copylaradio.com"}]' > ~/.zen/tmp/8080.json
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"'$APIGW'"}]' > ~/.zen/tmp/${MOATS}/5001.json
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"'$IPFSGW'"}]' > ~/.zen/tmp/${MOATS}/8080.json
FRIENDSFEEDS=$(cat ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/FRIENDSFEEDS 2>/dev/null)
echo "FRIENDS FEEDS : "${FRIENDSFEEDS}
## export FRIENDSFEEDS from Gchange stars
echo '[{"title":"$:/plugins/astroport/lightbeams/state/subscriptions","text":"'${FRIENDSFEEDS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/friends.json
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html \ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html \
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \ --import "$HOME/.zen/tmp/MadeInZion.json" "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \ --import "$HOME/.zen/tmp/5001.json" "application/json" \
--import "$HOME/.zen/tmp/${MOATS}/5001.json" "application/json" \ --import "$HOME/.zen/tmp/8080.json" "application/json" \
--import "$HOME/.zen/tmp/${MOATS}/8080.json" "application/json" \
--import "$HOME/.zen/tmp/${MOATS}/friends.json" "application/json" \
--output ~/.zen/tmp/${IPFSNODEID}/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain" --output ~/.zen/tmp/${IPFSNODEID}/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain"
[[ -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/newindex.html ]] \ [[ -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/newindex.html ]] \
@ -166,9 +167,12 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
fi fi
############################################################## ##############################################################
fi
################################################## ##################################################
################################################## ##################################################
################## UPDATING PLAYER MOA ################## UPDATING PLAYER MOA
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
[[ $DIFF ]] && cp ~/.zen/game/players/$PLAYER/ipfs/moa/.chain \ [[ $DIFF ]] && cp ~/.zen/game/players/$PLAYER/ipfs/moa/.chain \
~/.zen/game/players/$PLAYER/ipfs/moa/.chain.$(cat ~/.zen/game/players/$PLAYER/ipfs/moa/.moats) ~/.zen/game/players/$PLAYER/ipfs/moa/.chain.$(cat ~/.zen/game/players/$PLAYER/ipfs/moa/.moats)
@ -183,26 +187,13 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
echo " = /ipfs/$TW" echo " = /ipfs/$TW"
echo "================================================" echo "================================================"
######################### PLAYER_feed
IFRIENDHEAD="$(cat ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/IFRIENDHEAD 2>/dev/null)"
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
echo "IFRIENDHEAD :" ${IFRIENDHEAD}
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
# cp -f ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.rss.json ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/${FPLAYER}.rss.json
[[ -d ~/.zen/game/players/$PLAYER/FRIENDS ]] \
&& cat ${MY_PATH}/../www/iframe.html | sed "s~_ME_~${IPFSGW}/ipns/${ASTRONAUTENS}~g" | sed "s~_IFRIENDHEAD_~${IFRIENDHEAD}~g" > ~/.zen/game/players/$PLAYER/FRIENDS/index.html
[[ -s ~/.zen/game/players/$PLAYER/FRIENDS/index.html ]] \
&& FRAME=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/FRIENDS/index.html | tail -n 1) \
&& ipfs name publish --allow-offline -t 24h --key="${PLAYER}_feed" /ipfs/$FRAME
done done
################################################################# #################################################################
## IPFSNODEID ASTRONAUTES SIGNALING ## 12345 port ## IPFSNODEID ASTRONAUTES SIGNALING ## 12345 port
############################ ############################
# Scan local cache # Scan local cache
# ls ~/.zen/tmp/${IPFSNODEID}/ ls ~/.zen/tmp/${IPFSNODEID}/
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
## Merge actual online version ## Merge actual online version
@ -211,7 +202,7 @@ NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
[[ $BSIZE != $NSIZE ]] \ [[ $BSIZE != $NSIZE ]] \
&& ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \ && ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
&& echo "PUBLISH BALISE STATION /ipns/${IPFSNODEID} = $NSIZE octets" \ && echo "BALISE STATION /ipns/${IPFSNODEID} INDEXES = $NSIZE octets" \
&& ipfs name publish --allow-offline -t 24h /ipfs/$ROUTING && ipfs name publish --allow-offline -t 24h /ipfs/$ROUTING
echo "PLAYER.refresh DONE." echo "PLAYER.refresh DONE."

View File

@ -27,8 +27,7 @@ PLAYER="$2" ## IPNS KEY NAME - G1PUB - PLAYER ...
[[ ! $ASTRONAUTENS ]] && echo "Missing $PLAYER IPNS KEY - CONTINUE --" && exit 1 [[ ! $ASTRONAUTENS ]] && echo "Missing $PLAYER IPNS KEY - CONTINUE --" && exit 1
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
# IPFSNODEID=$(ipfs id -f='<id>\n') IPFSNODEID=$(ipfs id -f='<id>\n')
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
myIP=$(hostname -I | awk '{print $1}' | head -n 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])/") isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")

View File

@ -1,52 +1,40 @@
MYOS ?= ../myos MYOS ?= ../myos
MYOS_REPOSITORY ?= $(patsubst %/$(APP),%/myos,$(APP_REPOSITORY)) MYOS_REPOSITORY ?= https://github.com/aynicos/myos
APP ?= $(lastword $(subst /, ,$(APP_REPOSITORY)))
APP_REPOSITORY ?= $(shell git config --get remote.origin.url 2>/dev/null)
-include $(MYOS)/make/include.mk -include $(MYOS)/make/include.mk
$(MYOS): $(MYOS):
-@git clone $(MYOS_REPOSITORY) $(MYOS) -@git clone $(MYOS_REPOSITORY) $(MYOS)
.PHONY: all install shellcheck shellcheck-% tests
SHELL_FILES ?= $(wildcard .*/*.sh */*.sh */*/*.sh) SHELL_FILES ?= $(wildcard .*/*.sh */*.sh */*/*.sh)
.PHONY: all
all: install tests all: install tests
.PHONY: install install: upgrade build myos-host up player
install: myos build player up
upgrade: migrate-ipfs migrate-zen
echo "Welcome to myos docker land - make a user - make a player -" echo "Welcome to myos docker land - make a user - make a player -"
.PHONY: migrate
migrate-%: home := ~/.zen/game/players
migrate-%: migrate-%:
if $(SUDO) test ! -d /var/lib/docker/volumes/$(HOSTNAME)_$*; then \ [ ! -f /var/lib/docker/volumes/$(HOSTNAME)_$*/_data ] \
$(RUN) $(SUDO) mkdir -p /var/lib/docker/volumes/$(HOSTNAME)_$* \ && $(RUN) $(SUDO) mkdir -p /var/lib/docker/volumes/$(HOSTNAME)_$*/_data \
&& $(RUN) $(SUDO) cp -a $(if $($*),$($*)/,~/.$*/) /var/lib/docker/volumes/$(HOSTNAME)_$*/_data \ && $(RUN) $(SUDO) cp -a ~/.$* /var/lib/docker/volumes/$(HOSTNAME)_$*/_data \
&& $(RUN) $(SUDO) chown -R $(HOST_UID):$(HOST_GID) /var/lib/docker/volumes/$(HOSTNAME)_$*/_data \ && $(RUN) $(SUDO) chown -R $(USER) /var/lib/docker/volumes/$(HOSTNAME)_$* \
; \ || :
fi
.PHONY: player
player: STACK := User player: STACK := User
player: docker-network-create-$(USER) player: docker-network-create-$(USER)
$(call make,stack-User-$(if $(DELETE),down,up),$(MYOS),COMPOSE_PROJECT_NAME MAIL) $(call make,stack-User-$(if $(DELETE),down,up),$(MYOS),COMPOSE_PROJECT_NAME MAIL)
.PHONY: player-%
player-%: STACK := User player-%: STACK := User
player-%: player-%:
$(if $(filter $*,$(filter-out %-%,$(patsubst docker-compose-%,%,$(filter docker-compose-%,$(MAKE_TARGETS))))), \ $(if $(filter $*,$(filter-out %-%,$(patsubst docker-compose-%,%,$(filter docker-compose-%,$(MAKE_TARGETS))))), \
$(call make,stack-User-$*,$(MYOS),COMPOSE_PROJECT_NAME MAIL) \ $(call make,stack-User-$*,$(MYOS),COMPOSE_PROJECT_NAME MAIL) \
) )
.PHONY: shellcheck tests: shellcheck
shellcheck: shellcheck:
shellcheck $(SHELL_FILES) ||: shellcheck $(SHELL_FILES) ||:
.PHONY: shellcheck-%
shellcheck-%: shellcheck-%:
shellcheck $*/*.sh shellcheck $*/*.sh
.PHONY: tests
tests: shellcheck
.PHONY: upgrade
upgrade: migrate-home migrate-ipfs install

View File

@ -64,9 +64,9 @@ L'UTILISATEUR devient un JOUEUR, en semant son propre IPFS, en utilisant un Dock
Ainsi, les AMIS peuvent héberger d'autres AMIS. Ainsi, les AMIS peuvent héberger d'autres AMIS.
# TW # RESULTAT
PLAYER support@qo-op.com TW du PLAYER support@qo-op.com
https://ipfs.copylaradio.com/ipns/support.qo-op.com.localhost.copylaradio.com https://ipfs.copylaradio.com/ipns/support.qo-op.com.localhost.copylaradio.com
@ -85,26 +85,38 @@ Chaque jour, à 20h12, tous les noeuds synchronisent leur TW en fonction des niv
**Nous utilisons [la Ğ1](https://monnaie-libre.fr/) comme "la meilleure invention d'une crypto-monnaie"** **Nous utilisons [la Ğ1](https://monnaie-libre.fr/) comme "la meilleure invention d'une crypto-monnaie"**
N'importe qui (avec une connexion par fibre optique) peut créer un nœud chez lui, inviter des amis et partager des "tiddlers" selon leurs "G1Voeu". N'importe qui (avec une connexion par fibre optique) peut créer un nœud chez lui, inviter des amis et partager des "tiddlers" selon leurs "G1Voeu".
Vous pouvez rejoindre le swam#0 officiel d'Astroport, en devenant bootstrap et hôte dans https://astroport.copylaradio.com TestNet "DNS Round Robin". Vous pouvez rejoindre le swam#0 officiel d'Astroport, en devenant bootstrap et hôte dans http://tube.copylaradio.com:1234 TestNet "DNS Round Robin".
Qma9zvrYHGcUPisLKBcG9U9sktThX5VfVci8jfM8D9RspT
Bien entendu, le mieux est que chacun héberge et publie ses propres données sur son ordinateur "localhost" (pas de délégation de clé privée dans ce cas), de sorte que le protocole de réplication Astroport Ŋ1 peut être utilisé à tout moment. Mais il est préférable de garder une heure de connexion commune afin que les hôtes soient tous disponibles pour un torrent bit massif. Bien entendu, le mieux est que chacun héberge et publie ses propres données sur son ordinateur "localhost" (pas de délégation de clé privée dans ce cas), de sorte que le protocole de réplication Astroport Ŋ1 peut être utilisé à tout moment. Mais il est préférable de garder une heure de connexion commune afin que les hôtes soient tous disponibles pour un torrent bit massif.
TW est la première application disponible pour les personnes décentralisées. TW est la première application disponible pour les personnes décentralisées.
L'utilisateur peut écrire des notes personnelles, et quelques "tiddlers de commande" pour activer la copie des tiddlers entre les TW d'amis et exécuter des pré et/ou post traitements. L'utilisateur peut écrire des notes personnelles, et quelques "tiddlers de commande" pour activer la copie des tiddlers entre les TW d'amis et exécuter des pré et/ou post traitements.
# 20H12 Le "pays de la cryptographie" n'est plus un endroit structuré par des répertoires et des fichiers, il devient un hachage perdu dans un échange de bits, où les clés mémorisent des chaînes (hachage + horodatage + signature).
IPFS l'amène au niveau du réseau et crée un "lecteur virtuel fluide" à partir de tous les nœuds ou d'un groupe de nœuds en fonctionnement.
En fait, les CDN l'utilisent, mais il s'agit d'une technologie pour les personnes qui utilisent IPFS pour s'éloigner des centres de données, la plupart d'entre elles ne comprennent toujours pas.
Par rapport à la sémantique du "disque dur".
Astroport.ONE crée un "BIOS" pour le lecteur IPFS utilisé avec une paire de clés.
Le port 1234 redirige vers le "Master Boot Record" (ip:port) redirigeant vers la "Table d'allocation" montrant les fichiers au "Système d'exploitation".
Nous utilisons TW comme table d'allocation et interface d'administration et de débogage pour aider à développer une application distribuée au-dessus.
TW bénéficie automatiquement d'un "service d'hébergement collectif distribué".
Depuis la page de connexion (BIOS) de la "phase alpha" http://qwantic.com:1234
cliquez sur le lien dans le "pop jaune (MBR)" pour atteindre le formulaire de création d'un nouveau.
Cliquez sur le pop "jaune suivant (DApp)" (et rafraîchissez car cela peut prendre 30s pour être prêt).
À partir de deux phrases de passe et d'un courriel, le système génère la paire de clés et l'adresse IPN permanente du TW (seuls ceux qui ont installé la clé dans leur keystore ipfs peuvent la modifier).
J'espère que cela vous aidera.
[20H12.sh](/qo-op/Astroport.ONE/src/branch/master/20h12.sh) [20H12.sh](/qo-op/Astroport.ONE/src/branch/master/20h12.sh)
Ce rendez-vous permet à toutes les Stations de raffraichir leurs TW.
Cette horaire garantie à la "Blockchain" d'être à jour au maximum.
Une Stattion branché sur un panneau solaire et une batterie adéquate, peut fonctionner OnGrid et OffGrid # DEMO
# - ESSAYEZ IPFS - UN SOCKAGE INALTERABLE ET INTELLIGENT
### "The Barefoot Architect" de Johan Van Lengen. ### "The Barefoot Architect" de Johan Van Lengen.
@ -112,11 +124,11 @@ Lignes de commandes
``` ```
ipfs ls Qme6a6RscGHTg4e1XsRrpRoNbfA6yojC6XNCBrS8nPSEox/ ipfs ls Qme6a6RscGHTg4e1XsRrpRoNbfA6yojC6XNCBrS8nPSEox/
ipfs cat QmbfVUAyX6hsxTMAZY7MhvUmB3AkfLS7KqWihjGfu327yG > /tmp/vdoc.pub_the-barefoot-architect.pdf && xdg-open /tmp/vdoc.pub_the-barefoot-architect.pdf ipfs cat QmbfVUAyX6hsxTMAZY7MhvUmB3AkfLS7KqWihjGfu327yG /tmp/vdoc.pub_the-barefoot-architect.pdf
``` ```
Après un passage par [ajouter_media.sh](/qo-op/Astroport.ONE/src/branch/master/ajouter_media.sh) Après un passage par [ajouter_media.sh](/qo-op/Astroport.ONE/src/branch/master/ajouter_media.sh)
Vos données son stockées [dans des Tiddlers](https://ipfs.copylaradio.com/ipns/k51qzi5uqu5dioeckikst5f8jw1tbljom6acjbw9zerl3671921krs4nm1531r#:[tag[G1Films]]) Vos données son stockées [dans des Tiddlers](http://libra.copylaradio.com:8080/ipns/k51qzi5uqu5dioeckikst5f8jw1tbljom6acjbw9zerl3671921krs4nm1531r#:[tag[G1Films]])
### Foret Enchantée - PROJET ASTROPORT.pdf ### Foret Enchantée - PROJET ASTROPORT.pdf
@ -135,7 +147,7 @@ Comme un client qui commande, à qui on attribue un point relai qu'il devra cont
chaque passerelle de l'essaim sert toujours la même page (voir "templates/index.http") chaque passerelle de l'essaim sert toujours la même page (voir "templates/index.http")
https://astroport.copylaradio.com, informe où trouver la suite qui permet de découvrir la suite. http://tube.copylaradio.com:1234, informe où trouver la suite qui permet de découvrir la suite.
ici pour informer de l'état de la commande (OK, ERROR) ici pour informer de l'état de la commande (OK, ERROR)
``` ```
@ -155,7 +167,7 @@ _APID_ est la clef IPNS qui contient l'arborescence "json" en lecture
Exemple pour l'application "G1Voeu" https://ipfs.copylaradio.com/ipns/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u Exemple pour l'application "G1Voeu" https://ipfs.copylaradio.com/ipns/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u
Application "messaging" Application "messaging"
https://astroport.copylaradio.com/?salt=toto&pepper=toto&messaging=on http://tube.copylaradio.com:1234/?salt=toto&pepper=toto&messaging=on
Pour écrire une application on pourra utiliser "jsipfs" Pour écrire une application on pourra utiliser "jsipfs"
@ -165,7 +177,7 @@ https://js.ipfs.tech/
Ajoutez l'appel API "testcraft" pour enregistrer vos json Ajoutez l'appel API "testcraft" pour enregistrer vos json
?salt=toto&pepper=toto&testcraft=on&nodeid=_IPFDNODEID_&DATAID=_IPDSID_ ?salt=toto&pepper=toto&testcraft=on&nodeid=_IPFDNODEID_&DATAID=_IPDSID_
https://astroport.copylaradio.com/?salt=toto&pepper=toto&testcraft=on&nodeid=12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j&dataid=QmZXo87nn34i54HhuMrbuXM5fKXymhV3Zj9exeZDK6s4WD http://tube.copylaradio.com:1234/?salt=toto&pepper=toto&testcraft=on&nodeid=12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j&dataid=QmZXo87nn34i54HhuMrbuXM5fKXymhV3Zj9exeZDK6s4WD
``` ```
# APP = g1pub, messaging, testcraft, .... # APP = g1pub, messaging, testcraft, ....
@ -203,7 +215,7 @@ Proposez vos "Templates"
> [Simulateur Astronaute/Voeux](https://ncase.me/loopy/v1.1/?data=[[[3,646,229,0.5,%22Astronaute%22,5],[4,806,372,0.16,%22G1Voeu%22,3],[5,449,133,0.83,%22G1Talent%22,1],[6,928,124,0.5,%22Astronaute%22,0],[7,1055,293,0.5,%22Astronaute%22,0],[8,883,587,0.5,%22Astronaute%22,0],[10,691,54,0.5,%22G1Voeu%22,3]],[[3,5,82,1,0],[3,4,-87,1,0],[6,4,83,1,0],[4,5,176,1,0],[8,8,85,1,12],[8,4,-45,1,0],[7,4,34,1,0],[5,3,49,1,0],[7,7,101,1,225],[6,6,113,1,-84],[3,3,90,1,75],[5,4,-293,1,0],[3,10,34,1,0]],[],10%5D) > [Simulateur Astronaute/Voeux](https://ncase.me/loopy/v1.1/?data=[[[3,646,229,0.5,%22Astronaute%22,5],[4,806,372,0.16,%22G1Voeu%22,3],[5,449,133,0.83,%22G1Talent%22,1],[6,928,124,0.5,%22Astronaute%22,0],[7,1055,293,0.5,%22Astronaute%22,0],[8,883,587,0.5,%22Astronaute%22,0],[10,691,54,0.5,%22G1Voeu%22,3]],[[3,5,82,1,0],[3,4,-87,1,0],[6,4,83,1,0],[4,5,176,1,0],[8,8,85,1,12],[8,4,-45,1,0],[7,4,34,1,0],[5,3,49,1,0],[7,7,101,1,225],[6,6,113,1,-84],[3,3,90,1,75],[5,4,-293,1,0],[3,10,34,1,0]],[],10%5D)
> [Essaim Astroport.ONE](https://ncase.me/loopy/v1.1/?data=[[[1,419,351,1,%22Astroport.ONE%22,3],[2,506,530,1,%22Terrien%22,5],[3,499,95,1,%22IPFS%22,1],[4,272,225,1,%22Astroport.ONE%22,3],[5,620,297,0.16,%22Astroport.ONE%22,4],[7,927,69,0.66,%22Astroport.ONE%22,3],[8,798,175,0.66,%22Astroport.ONE%22,3]],[[2,1,94,-1,0],[1,2,89,1,0],[2,5,-122,1,0],[5,3,58,1,0],[3,5,25,1,0],[4,3,117,1,0],[3,4,-152,1,0],[1,3,60,1,0],[3,1,-18,1,0],[7,3,-44,1,0],[3,7,15,1,0],[8,3,37,1,0],[3,8,-47,1,0]],[[798,557,%22https%253A%252F%252Fipfs.copylaradio.com%253A1234%250A(salt%2520%252F%2520pepper%2520%252F%2520email)%2520%253D%2520TW%2520%252B%2520AstroBot%2520API%22],[256,141,%22Station%2520Officielle%250A(Bootstrap%2520%252B%2520RoundRobin%2520DNS)%22],[868,332,%22D%25C3%25A9l%25C3%25A9gation%2520de%2520clef%250A(Tiers%2520de%2520confiance)%22]],9%5D) > [Essaim Astroport.ONE](https://ncase.me/loopy/v1.1/?data=[[[1,419,351,1,%22Astroport.ONE%22,3],[2,506,530,1,%22Terrien%22,5],[3,499,95,1,%22IPFS%22,1],[4,272,225,1,%22Astroport.ONE%22,3],[5,620,297,0.16,%22Astroport.ONE%22,4],[7,927,69,0.66,%22Astroport.ONE%22,3],[8,798,175,0.66,%22Astroport.ONE%22,3]],[[2,1,94,-1,0],[1,2,89,1,0],[2,5,-122,1,0],[5,3,58,1,0],[3,5,25,1,0],[4,3,117,1,0],[3,4,-152,1,0],[1,3,60,1,0],[3,1,-18,1,0],[7,3,-44,1,0],[3,7,15,1,0],[8,3,37,1,0],[3,8,-47,1,0]],[[798,557,%22http%253A%252F%252Ftube.copylaradio.com%253A1234%250A(salt%2520%252F%2520pepper%2520%252F%2520email)%2520%253D%2520TW%2520%252B%2520AstroBot%2520API%22],[256,141,%22Station%2520Officielle%250A(Bootstrap%2520%252B%2520RoundRobin%2520DNS)%22],[868,332,%22D%25C3%25A9l%25C3%25A9gation%2520de%2520clef%250A(Tiers%2520de%2520confiance)%22]],9%5D)

View File

@ -32,26 +32,20 @@ alias espeak='espeak 1>&2>/dev/null'
[[ $(which ffmpeg) == "" ]] && echo "ERREUR! Installez ffmpeg" && echo "sudo apt install ffmpeg" && exit 1 [[ $(which ffmpeg) == "" ]] && echo "ERREUR! Installez ffmpeg" && echo "sudo apt install ffmpeg" && exit 1
[[ $(which xdpyinfo) == "" ]] && echo "ERREUR! Installez x11-utils" && echo "sudo apt install x11-utils" && exit 1 [[ $(which xdpyinfo) == "" ]] && echo "ERREUR! Installez x11-utils" && echo "sudo apt install x11-utils" && exit 1
URL="$1"
PLAYER="$2"
CHOICE="$3"
# Check who is .current PLAYER # Check who is .current PLAYER
[[ ${PLAYER} == "" ]] && PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
[[ ${PLAYER} == "" ]] \ [[ ${PLAYER} == "" ]] \
&& players=($(ls ~/.zen/game/players 2>/dev/null)) \ && espeak "YOU MUST CONNECT A PLAYER" \
&& espeak "PLEASE CONNECT A PLAYER" \ && OUTPUT=$(zenity --forms --width 480 --title="CONNEXION" --text="Ecrivez la formule magique" --separator="~" --add-entry="Phrase 1" --add-entry="Phrase 2") \
&& OUTPUT=$(zenity --entry --width 640 --title="=> Astroport" --text="ASTRONAUTE ?" --entry-text=${players[@]}) \ && SALT=$(awk -F '~' '{print $1}' <<<$OUTPUT) \
&& [[ $OUTPUT ]] && PLAYER=$OUTPUT && rm -f ~/.zen/game/players/.current && ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current \ && PEPPER=$(awk -F '~' '{print $2}' <<<$OUTPUT) \
&& PLAYER=$(zenity --entry --width 300 --title "PLAYER" --text "Indiquez votre email" --entry-text="user@domain.tld") \
[[ ${PLAYER} == "" ]] && exit 1 && ${MY_PATH}/tools/VISA.new.sh "$SALT" "$PEPPER" "$PLAYER"
PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null)
espeak "Hello $PSEUDO" espeak "Hello $PSEUDO"
(cd $MY_PATH && git pull && espeak "code ok") &
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null) G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null)
[[ $G1PUB == "" ]] && espeak "ERROR NO G 1 PUBLIC KEY FOUND - EXIT" && exit 1 [[ $G1PUB == "" ]] && espeak "ERROR NO G 1 PUBLIC KEY FOUND - EXIT" && exit 1
@ -64,16 +58,15 @@ MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
[[ $IPFSNODEID == "" ]] && echo "IPFSNODEID manquant" && espeak "IPFS NODE ID Missing" && exit 1 [[ $IPFSNODEID == "" ]] && echo "IPFSNODEID manquant" && espeak "IPFS NODE ID Missing" && exit 1
BROWSER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
myIP=$(hostname -I | awk '{print $1}' | head -n 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])/") 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" [[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
URL="$1"
if [ $URL ]; then if [ $URL ]; then
echo "URL: $URL" echo "URL: $URL"
REVSOURCE="$(echo "$URL" | awk -F/ '{print $3}' | rev)_" REVSOURCE="$(echo "$URL" | awk -F/ '{print $3}' | rev)_"
[ ! $2 ] && IMPORT=$(zenity --entry --width 640 --title="$URL => Astroport" --text="${PLAYER} Type de media à importer ?" --entry-text="Video" Page MP3 Web) || IMPORT="$CHOICE" [ ! $2 ] && IMPORT=$(zenity --entry --width 640 --title="$URL => Astroport" --text="${PLAYER} Type de media à importer ?" --entry-text="Video" Page MP3 Web)
[[ $IMPORT == "" ]] && espeak "No choice made. Exiting program" && exit 1 [[ $IMPORT == "" ]] && espeak "No choice made. Exiting program" && exit 1
[[ $IMPORT == "Video" ]] && IMPORT="Youtube" [[ $IMPORT == "Video" ]] && IMPORT="Youtube"
CHOICE="$IMPORT" CHOICE="$IMPORT"
@ -146,8 +139,8 @@ espeak "Ready !"
######################################################################## ########################################################################
# CHOOSE CATEGORY (remove anime, not working!) # CHOOSE CATEGORY (remove anime, not working!)
[ ! $2 ] && [[ $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 == "" ]] && 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 == "" ]] && echo "NO CHOICE MADE" && exit 1 [[ $CHOICE == "" ]] && exit 1
# LOWER CARACTERS # LOWER CARACTERS
CAT=$(echo "${CHOICE}" | awk '{print tolower($0)}') CAT=$(echo "${CHOICE}" | awk '{print tolower($0)}')
@ -176,7 +169,7 @@ case ${CAT} in
espeak "Ready to record your webcam" espeak "Ready to record your webcam"
[ ! $2 ] && zenity --warning --width 300 --text "${PLAYER}. Prêt à enregistrer votre video ?" zenity --warning --width 300 --text "${PLAYER}. Prêt à enregistrer votre video ?"
## RECORD WEBCAM VIDEO ## RECORD WEBCAM VIDEO
${MY_PATH}/tools/vlc_webcam.sh ${MY_PATH}/tools/vlc_webcam.sh
@ -198,8 +191,8 @@ case ${CAT} in
espeak "youtube : video copying" espeak "youtube : video copying"
YTURL="$URL" YTURL="$URL"
[ ! $2 ] && [[ $YTURL == "" ]] && YTURL=$(zenity --entry --width 300 --title "Lien ou identifiant à copier" --text "Indiquez le lien (URL) ou l'ID de la vidéo" --entry-text="") [[ $YTURL == "" ]] && YTURL=$(zenity --entry --width 300 --title "Lien ou identifiant à copier" --text "Indiquez le lien (URL) ou l'ID de la vidéo" --entry-text="")
[[ $YTURL == "" ]] && echo "URL EMPTY " && exit 1 [[ $YTURL == "" ]] && exit 1
REVSOURCE="$(echo "$YTURL" | awk -F/ '{print $3}' | rev)_" REVSOURCE="$(echo "$YTURL" | awk -F/ '{print $3}' | rev)_"
@ -210,14 +203,9 @@ mkdir -p ${YTEMP}
# youtube-dl $YTURL # youtube-dl $YTURL
echo "VIDEO $YTURL" echo "VIDEO $YTURL"
# --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs /usr/local/bin/youtube-dl -f '[ext=mp4]+best[height<=480]+[filesize<300M]' \
--no-playlist --write-info-json \
/usr/local/bin/youtube-dl -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \ --no-mtime -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" $YTURL
--cookies-from-browser $BROWSER \
--download-archive $HOME/.zen/.yt-dlp.list \
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \
--no-playlist --write-info-json --write-description --no-get-comments \
--no-mtime -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" $YTURL
# Get filename, extract ID, make destination dir and move copy. # Get filename, extract ID, make destination dir and move copy.
YFILE=$(ls -S ${YTEMP} | head -n 1) YFILE=$(ls -S ${YTEMP} | head -n 1)
@ -235,6 +223,30 @@ espeak "OK $YNAME copied"
MEDIAID="$REVSOURCE${YID}" MEDIAID="$REVSOURCE${YID}"
TITLE="${YNAME%.*}" TITLE="${YNAME%.*}"
MEDIAKEY="YOUTUBE_${MEDIAID}" 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" \
--column="Feature" \
FALSE Savoir \
FALSE Nature \
FALSE Habiter \
FALSE Nourrir \
FALSE Deplacer \
FALSE Guerir \
FALSE Divertir \
FALSE Musique \
FALSE DIY \
FALSE Science \
FALSE Humain \
FALSE Animal \
TRUE Eveil \
TRUE ${PLAYER// /-}) || GENRES="${PLAYER// /-}"
# FORMAT GENRES genre1|genre2|genre3
FILE_PATH="$HOME/Astroport/youtube/$MEDIAID" FILE_PATH="$HOME/Astroport/youtube/$MEDIAID"
mkdir -p ${FILE_PATH} && mv -f ${YTEMP}/* ${FILE_PATH}/ mkdir -p ${FILE_PATH} && mv -f ${YTEMP}/* ${FILE_PATH}/
@ -275,7 +287,7 @@ rm -Rf ${YTEMP}
cd ~/.zen/tmp/ cd ~/.zen/tmp/
URL=$(echo $URL | grep -Eo '^http[s]?://[^/]+') URL=$(echo $URL | grep -Eo '^http[s]?://[^/]+')
[ ! $2 ] && [[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "Lien du site Web à copier" --text "Indiquez le lien (URL)" --entry-text="") [[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "Lien du site Web à copier" --text "Indiquez le lien (URL)" --entry-text="")
## Extract http(s)://domain.tld ## Extract http(s)://domain.tld
URL=$(echo $URL | grep -Eo '^http[s]?://[^/]+') # URL="https://discuss.ipfs.io" URL=$(echo $URL | grep -Eo '^http[s]?://[^/]+') # URL="https://discuss.ipfs.io"
@ -355,7 +367,6 @@ echo '[
"type": "'text/vnd.tiddlywiki'", "type": "'text/vnd.tiddlywiki'",
"text": "'$TEXT'", "text": "'$TEXT'",
"size": "'${FILE_BSIZE}'", "size": "'${FILE_BSIZE}'",
"filesize": "'${FILE_SIZE}'",
"g1pub": "'${G1PUB}'", "g1pub": "'${G1PUB}'",
"ipfs": "'/ipfs/${IPFSREPFILEID}'", "ipfs": "'/ipfs/${IPFSREPFILEID}'",
"mediakey": "'${MEDIAKEY}'", "mediakey": "'${MEDIAKEY}'",
@ -388,11 +399,11 @@ echo '[
## EVOLVE TO ARTICLE ## 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/ # httrack --mirror --ext-depth=0 --depth=1 --near --stay-on-same-address --keep-links=0 --path article-x --quiet https://example.com/article-x/
[ ! $2 ] && [[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "URL à convertir en PDF (VIDE POUR UN FICHIER LOCAL)" --text "Indiquez le lien (URL)" --entry-text="") [[ $URL == "" ]] && URL=$(zenity --entry --width 300 --title "Lien de la page à convertir en PDF" --text "Indiquez le lien (URL)" --entry-text="")
if [[ $URL != "" ]]; then if [[ $URL != "" ]]; then
## record one page to PDF ## record one page to PDF
[ ! $2 ] && [[ ! $(which chromium) ]] && zenity --warning --width ${large} --text "Utilitaire de copie de page web absent.. Lancez la commande 'sudo apt install chromium'" && exit 1 [[ ! $(which chromium) ]] && zenity --warning --width ${large} --text "Utilitaire de copie de page web absent.. Lancez la commande 'sudo apt install chromium'" && exit 1
cd ~/.zen/tmp/ && rm -f output.pdf cd ~/.zen/tmp/ && rm -f output.pdf
@ -404,9 +415,9 @@ echo '[
if [[ $URL == "" ]]; then if [[ $URL == "" ]]; then
# SELECT FILE TO ADD TO ASTROPORT/KODI # SELECT FILE TO ADD TO ASTROPORT/KODI
[ ! $2 ] && FILE=$(zenity --file-selection --title="Sélectionner le fichier à ajouter") FILE=$(zenity --file-selection --title="Sélectionner le fichier à ajouter")
echo "${FILE}" echo "${FILE}"
[[ $FILE == "" ]] && echo "NO FILE" && exit 1 [[ $FILE == "" ]] && exit 1
# Remove file extension to get file name => STITLE # Remove file extension to get file name => STITLE
FILE_PATH="$(dirname "${FILE}")" FILE_PATH="$(dirname "${FILE}")"
@ -424,10 +435,10 @@ echo '[
CTITLE=$(echo $URL | rev | cut -d '/' -f 1 | rev) CTITLE=$(echo $URL | rev | cut -d '/' -f 1 | rev)
[ ! $2 ] && TITLE=$(zenity --entry --width 480 --title "Titre" --text "Quel nom donner à ce fichier ? " --entry-text="${CTITLE}") || TITLE="$CTITLE" TITLE=$(zenity --entry --width 480 --title "Titre" --text "Quel nom de fichier à donner à cette page ? " --entry-text="${CTITLE}")
[[ "$TITLE" == "" ]] && echo "NO TITLE" && exit 1 [[ $TITLE == "" ]] && exit 1
FILE_NAME="$(echo "${TITLE}" | detox --inline).pdf" ## TODO make it better FILE_NAME="$(echo "${TITLE}" | detox --inline).pdf" ## TODO make it better
REVSOURCE="$(echo "$URL" | awk -F/ '{print $3}' | rev | detox --inline)_" REVSOURCE="$(echo "$URL" | awk -F/ '{print $3}' | rev | detox --inline)_"
MEDIAID="$REVSOURCE$(echo "${TITLE}" | detox --inline)" MEDIAID="$REVSOURCE$(echo "${TITLE}" | detox --inline)"
@ -454,42 +465,38 @@ echo '[
espeak " Youtube music copying. Please help us to make the Web your Web" espeak " Youtube music copying. Please help us to make the Web your Web"
# [ ! $2 ] && zenity --warning --width 600 --text 'DEVELOPPEMENT ZONE - https://git.p2p.legal - P2P INTERNET FACTORY' zenity --warning --width 600 --text 'DEVELOPPEMENT ZONE - https://git.p2p.legal - P2P INTERNET FACTORY'
# Create TEMP directory # Create TEMP directory
YTEMP="$HOME/.zen/tmp/$(date -u +%s%N | cut -b1-13)" YTEMP="$HOME/.zen/tmp/$(date -u +%s%N | cut -b1-13)"
mkdir -p ${YTEMP} mkdir -p ${YTEMP}
YTURL="$URL" YTURL="$URL"
[ ! $2 ] && [[ $YTURL == "" ]] && artist=$(zenity --entry --width 400 --title "Extraction MP3 depuis Youtube" --text "Artiste recherché ou Lien Youtube" --entry-text="") [[ $YTURL == "" ]] && artist=$(zenity --entry --width 400 --title "Extraction MP3 depuis Youtube" --text "Artiste recherché ou Lien Youtube" --entry-text="")
[[ $YTURL == "" ]] && [[ $artist == "" ]] && echo "NO COPY TO MAKE" && exit 1 [[ $artist == "" ]] && exit 1
## CHECK if artist is LINK or ID ## CHECK if artist is LINK or ID
length=${#artist} length=${#artist}
islink=$(echo "$artist" | grep "http") islink=$(echo "$artist" | grep "http")
if [[ ! $islink && $length != 11 ]]
if [[ $YTURL == "" && $islink == "" && $length != 11 ]]
then then
# Ask for song name # Ask for song name
[ ! $2 ] && song=$(zenity --entry --width 300 --title "Titre à chercher sur Youtube" --text "Titre recherché" --entry-text="") song=$(zenity --entry --width 300 --title "Titre à chercher sur Youtube" --text "Titre recherché" --entry-text="")
[[ $song == "" ]] && espeak "I was expecting a song name. Sorry. I Am out." && exit 1 [[ $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) # Download mp3 from 1st youtube search video result (--write-info-json)
/usr/local/bin/youtube-dl --default-search ytsearch1: \ /usr/local/bin/youtube-dl --default-search ytsearch1: \
--cookies-from-browser $BROWSER \
--ignore-errors --no-mtime \ --ignore-errors --no-mtime \
--embed-thumbnail --metadata-from-title "%(artist)s - %(title)s" --add-metadata \ --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 $song"
else else
[[ $YTURL == "" ]] && YTURL="$artist" # artist is the URL ot the song
/usr/local/bin/youtube-dl \ /usr/local/bin/youtube-dl \
--cookies-from-browser $BROWSER \
--ignore-errors --no-mtime \ --ignore-errors --no-mtime \
--embed-thumbnail --metadata-from-title "%(artist)s - %(title)s" --add-metadata \ --embed-thumbnail --metadata-from-title "%(artist)s - %(title)s" --add-metadata \
--extract-audio --audio-format mp3 -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" "$YTURL" --extract-audio --audio-format mp3 -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" "$artist"
fi fi
@ -556,7 +563,6 @@ echo '[
"type": "'audio/mpeg'", "type": "'audio/mpeg'",
"text": "'$TEXT'", "text": "'$TEXT'",
"size": "'${FILE_BSIZE}'", "size": "'${FILE_BSIZE}'",
"filesize": "'${FILE_SIZE}'",
"g1pub": "'${G1PUB}'", "g1pub": "'${G1PUB}'",
"ipfs": "'/ipfs/${IPFSREPFILEID}'", "ipfs": "'/ipfs/${IPFSREPFILEID}'",
"mediakey": "'${MEDIAKEY}'", "mediakey": "'${MEDIAKEY}'",
@ -687,14 +693,6 @@ FILM_GENRES=$(zenity --list --checklist --title="GENRE" --height=${haut}\
# FORMAT GENRES ["genre1","genre2"] # USE IF YOU ACTIVATE KODI COMPATIBILITY # FORMAT GENRES ["genre1","genre2"] # USE IF YOU ACTIVATE KODI COMPATIBILITY
GENRES="[\"$(echo ${FILM_GENRES} | sed s/\|/\",\"/g)\"]" GENRES="[\"$(echo ${FILM_GENRES} | sed s/\|/\",\"/g)\"]"
# CONVERT INPUT TO MP4 #######################
[[ $FILE_EXT != "mp4" ]] \
&& espeak "Converting to M P 4. Please wait" \
&& echo "CONVERT TO MP4 : ffmpeg -loglevel quiet -i ${FILE_PATH}/${FILE_NAME} -c:v libx264 -c:a aac ${FILE_PATH}/$FILE_TITLE.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" \
&& espeak "M P 4 ready"
mkdir -p ~/Astroport/${CAT}/${MEDIAID}/ mkdir -p ~/Astroport/${CAT}/${MEDIAID}/
[[ ! -s "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}" ]] \ [[ ! -s "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}" ]] \
@ -722,11 +720,11 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
# \_/ |_|\__,_|\___|\___/ # \_/ |_|\__,_|\___|\___/
# TIMESTAMP INDEX # TIMESTAMP INDEX
video) video | obs)
espeak "Add your personnal video in TW" espeak "Add your personnal video in TW"
zenity --warning --width 600 --text 'DEV ZONE - HELP US - https://git.p2p.legal' zenity --warning --width 600 --text 'DEV ZONE - HELP US - REGISTER - https://git.p2p.legal'
## GENERAL MEDIAKEY for uploaded video. Title + Decription + hashtag + hashipfs ## GENERAL MEDIAKEY for uploaded video. Title + Decription + hashtag + hashipfs
# SELECT FILE TO ADD TO ASTROPORT/KODI # SELECT FILE TO ADD TO ASTROPORT/KODI
@ -746,7 +744,7 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
&& FILE_EXT="mp4" && FILE_NAME="$FILE_TITLE.mp4" && FILE_EXT="mp4" && FILE_NAME="$FILE_TITLE.mp4"
# VIDEO TITLE # VIDEO TITLE
TITLE=$(zenity --entry --width 300 --title "Titre" --text "Indiquez le titre de cette 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 == "" ]] && exit 1
TITLE=$(echo "${TITLE}" | sed "s/[(][^)]*[)]//g" | sed -e 's/;/_/g' ) # Clean TITLE (NO ;) TITLE=$(echo "${TITLE}" | sed "s/[(][^)]*[)]//g" | sed -e 's/;/_/g' ) # Clean TITLE (NO ;)
@ -755,10 +753,10 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
mkdir -p ~/Astroport/${CAT}/${MEDIAID}/ mkdir -p ~/Astroport/${CAT}/${MEDIAID}/
MEDIAKEY="VIDEO_${MEDIAID}" MEDIAKEY="VIDEO_${MEDIAID}"
## CREATE SIMPLE JSON (EXPERIENCE WITH it) ## 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 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 FOR new_file_in_astroport POST TREATMENT ## MOVE FILE TO IMPORT ZONE
[[ ! -s "$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}" && cp "${FILE_PATH}/${FILE_NAME}" "$HOME/Astroport/${CAT}/${MEDIAID}/${TITLE}${SAISON}.${FILE_EXT}"
@ -778,7 +776,7 @@ echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/i
######################################################################## ########################################################################
*) *)
[ ! $2 ] && zenity --warning --width ${large} --text "Impossible d'interpréter votre commande $CAT" zenity --warning --width ${large} --text "Impossible d'interpréter votre commande $CAT"
exit 1 exit 1
;; ;;
@ -824,7 +822,8 @@ if [[ ! -s ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; then
timestamp=$(date -u +%s%N | cut -b1-13) timestamp=$(date -u +%s%N | cut -b1-13)
## CREATE BASH SCRIPT ## 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
@ -855,44 +854,28 @@ if [[ ! -s ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; then
espeak "Adding $CAT to I P F S. Please Wait" espeak "Adding $CAT to I P F S. Please Wait"
## RUN BASH SCRIPT
bash ~/Astroport/Add_${MEDIAKEY}_script.sh "noh265" bash ~/Astroport/Add_${MEDIAKEY}_script.sh "noh265"
## OR PUT IN YOUR QUEUE
## CREATING TIMELINE FOR BATCH TREATMENT
#~ mkdir -p ~/.zen/tmp/${IPFSNODEID}/ajouter_media.sh/
#~ echo "${MEDIAKEY}" > ~/.zen/tmp/${IPFSNODEID}/ajouter_media.sh/${MOATS}
##
fi fi
####################################### espeak "Updating T W"
########################## TIDDLER JSON READY
#######################################
if [[ -s ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; then
espeak "Updating T W"
######################################################################## ########################################################################
## ADD TIDDLER TO TW ## ADD TIDDLER TO TW
######################################################################## ########################################################################
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
## GETTING LAST TW via IPFS or HTTP GW ## 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) LIBRA=$(head -n 2 ${MY_PATH}/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
rm -f ~/.zen/tmp/ajouter_media.html > /dev/null 2>&1 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 [[ $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 ]] && 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/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 [[ ! -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 ## TODO : CHECK CACHE LAST MODIFIED
echo "%%%%%%%%%%%%%% I GOT YOUR TW %%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%% I GOT YOUR TW %%%%%%%%%%%%%%%%%%%%%%%%%%"
[[ -s ~/.zen/tmp/ajouter_media.html ]] \ [[ -s ~/.zen/tmp/ajouter_media.html ]] && cp -f ~/.zen/tmp/ajouter_media.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html && espeak "TW Found"
&& cp -f ~/.zen/tmp/ajouter_media.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \ ###############################
&& espeak "TW Found" \
|| espeak "USING LOCAL COPY"
###############################
echo "Nouveau MEDIAKEY dans TW $PSEUDO / ${PLAYER} : http://$myIP:8080/ipns/$ASTRONAUTENS" echo "Nouveau MEDIAKEY dans TW $PSEUDO / ${PLAYER} : http://$myIP:8080/ipns/$ASTRONAUTENS"
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \ tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
@ -926,16 +909,8 @@ if [[ -s ~/Astroport/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; then
fi fi
espeak "OK We did it"
else
espeak "Sorry. No Tiddler found"
fi
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` dur=`expr $end - $start`
espeak "It tooks $dur seconds to acomplish" espeak "OK We did it and It tooks $dur seconds to acomplish"
exit 0 exit 0

View File

@ -1,186 +0,0 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
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])/")
[[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
ME="${0##*/}"
TS=$(date -u +%s%N | cut -b1-13)
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
echo '
_ ____ _____ ____ ___ ____ ___ ____ _____ ___ _ _ _____
/ \ / ___|_ _| _ \ / _ \| _ \ / _ \| _ \_ _| / _ \| \ | | ____|
/ _ \ \___ \ | | | |_) | | | | |_) | | | | |_) || | | | | | \| | _|
/ ___ \ ___) || | | _ <| |_| | __/| |_| | _ < | | | |_| | |\ | |___
/_/ \_\____/ |_| |_| \_\\___/|_| \___/|_| \_\|_| \___/|_| \_|_____|
Ambassade numérique pair à pair sur IPFS.
@@@@@@@@@@@@@@@@@@
ASTROPORT
VISA : MadeInZion
@@@@@@@@@@@@@@@@@@'
echo
## VERIFY SOFTWARE DEPENDENCIES
[[ ! $(which ipfs) ]] && echo "EXIT. Vous devez avoir installé ipfs CLI sur votre ordinateur" && echo "https://dist.ipfs.io/#go-ipfs" && exit 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 ]] && echo "Lancez 'ipfs daemon' SVP sudo systemctl start ipfs" && exit 1
export IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
echo 'PRESS ENTER... '; read
## CREATE AND OR CONNECT USER
PS3='Astronaute connectez votre PLAYER ___ '
players=("NOUVEAU VISA" "IMPORT PLAYER" $(ls ~/.zen/game/players 2>/dev/null))
## MULTIPLAYER
select fav in "${players[@]}"; do
case $fav in
"NOUVEAU VISA")
${MY_PATH}/tools/VISA.new.sh
fav=$(cat ~/.zen/tmp/PSEUDO 2>/dev/null) && rm ~/.zen/tmp/PSEUDO
echo "Astronaute $fav bienvenue dans le jeu de terraformation forêt jardin MadeInZion"
exit
;;
"IMPORT PLAYER")
echo "'Identifiant'"
read SALT
echo "'Mot de passe'"
read 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
;;
"")
echo "Choix obligatoire. exit"
exit
;;
*) echo "Salut $fav"
break
;;
esac
done
PLAYER=$fav
pass=$(cat ~/.zen/game/players/$PLAYER/.pass 2>/dev/null)
########################################## DEVEL
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/${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/$PLAYER/.pass 2>/dev/null)"
export 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"
echo "ENTREE ACCORDEE"
echo
export ASTRONAUTENS=$(ipfs key list -l | grep -w "$PLAYER" | cut -d ' ' -f 1)
echo "$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) TW/Moa"
echo "http://$myIP:8080/ipns/$ASTRONAUTENS"
echo "Activation Réseau P2P Astroport !"
echo
PS3="$PLAYER choisissez : __ "
choices=("AJOUTER VLOG" "CREER UN VOEU" "IMPRIMER QRVOEU" "IMPRIMER VISA" "EXPORTER VISA" "SUPPRIMER VISA" "QUITTER")
select fav in "${choices[@]}"; do
case $fav in
"IMPRIMER VISA")
echo "IMPRESSION"
${MY_PATH}/tools/VISA.print.sh "$PLAYER"
;;
"EXPORTER VISA")
echo "EXPORT IDENTITE ASTRONAUTE"
du -h ~/.zen/game/players/$PLAYER/
echo "MANUAL BACKUP ZIP ~/.zen/game/players/$PLAYER/"
## EXPORT TW + VOEUX IPNS KEYS
break
;;
"SUPPRIMER VISA")
echo "ATTENTION ${PLAYER} SUPPRESSION DEFINITIVE !!"
echo "Enter to continue. Ctrl+C to stop"
read
ipfs key rm ${PLAYER}; ipfs key rm ${PLAYER}_feed; ipfs key rm $G1PUB;
for voeu in $(ls ~/.zen/game/players/$PLAYER/voeux/ 2>/dev/null); 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"
rm -Rf ~/.zen/game/players/$PLAYER
break
;;
"AJOUTER VLOG")
echo "Lancement Webcam..."
${MY_PATH}/tools/vlc_webcam.sh "$PLAYER"
;;
"CREER UN VOEU")
echo "QRCode à coller sur les lieux ou objets portant une Gvaleur"
cp ~/.zen/game/players/$PLAYER/ipfs/moa/index.html ~/.zen/tmp/$PLAYER.html
${MY_PATH}/ASTROBOT/G1Voeu.sh "" "$PLAYER" "~/.zen/tmp/$PLAYER.html"
DIFF=$(diff ~/.zen/game/players/$PLAYER/ipfs/moa/index.html ~/.zen/tmp/$PLAYER.html)
if [[ $DIFF ]]; then
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
cp ~/.zen/game/players/$PLAYER/ipfs/moa/.chain \
~/.zen/game/players/$PLAYER/ipfs/moa/.chain.$(cat ~/.zen/game/players/$PLAYER/ipfs/moa/.moats)
TW=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ipfs/moa/index.html | tail -n 1)
ipfs name publish --allow-offline -t 72h --key=$PLAYER /ipfs/$TW
echo $TW > ~/.zen/game/players/$PLAYER/ipfs/moa/.chain
echo $MOATS > ~/.zen/game/players/$PLAYER/ipfs/moa/.moats
fi
echo "================================================"
echo "$PLAYER : http://$myIP:8080/ipns/$ASTRONAUTENS"
echo "================================================"
;;
"IMPRIMER QRVOEU")
${MY_PATH}/tools/VOEUX.print.sh $PLAYER
;;
"QUITTER")
echo "CIAO" && exit 0
;;
"")
echo "Mauvais choix."
;;
esac
done
exit 0

View File

@ -121,7 +121,7 @@ RUN chmod +rx /usr/local/bin/cronlock
# config ssmtp # config ssmtp
COPY templates/.ssmtprc /etc/ssmtp/ssmtp.conf COPY templates/.ssmtprc /etc/ssmtp/ssmtp.conf
RUN chmod 640 /etc/ssmtp/ssmtp.conf && chgrp mail /etc/ssmtp/ssmtp.conf RUN chmod 600 /etc/ssmtp/ssmtp.conf
EXPOSE 1234 12345 EXPOSE 1234 12345
@ -191,7 +191,7 @@ VOLUME "/home/$USER/Astroport"
# homedir # homedir
RUN mkdir -p "/home/$USER/.ipfs" "/home/$USER/.zen/game/players" "/home/$USER/Astroport" \ RUN mkdir -p "/home/$USER/.ipfs" "/home/$USER/.zen/game/players" "/home/$USER/Astroport" \
&& chown -R "$USER" "/home/$USER" && 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 HEALTHCHECK CMD [ $(ps aux |grep 'nc -l -p' |wc -l) -lt 199 ] && echo -n OK

View File

@ -14,8 +14,6 @@ log() {
} }
zen() { zen() {
mkdir -p /home/zen/Astroport
sudo chown zen:users /home/zen /home/zen/.zen /home/zen/.zen/game /home/zen/.zen/game/players
[ -d "$ASTROPORT_DIR" ] && cd "$ASTROPORT_DIR" && git pull -q || git clone -q "$ASTROPORT_REPO" "$ASTROPORT_DIR" [ -d "$ASTROPORT_DIR" ] && cd "$ASTROPORT_DIR" && git pull -q || git clone -q "$ASTROPORT_REPO" "$ASTROPORT_DIR"
} }

View File

@ -8,8 +8,9 @@ services:
- GID=${HOST_GID} - GID=${HOST_GID}
- UID=${HOST_UID} - UID=${HOST_UID}
container_name: ${COMPOSE_PROJECT_NAME}-astroport container_name: ${COMPOSE_PROJECT_NAME}-astroport
domainname: ${HOST_ASTROPORT_SERVICE_DOMAIN:-localhost} environment:
hostname: ${HOST_ASTROPORT_SERVICE_NAME:-astroport} - ENV=${ENV}
- SHELL=${DOCKER_SHELL}
image: ${DOCKER_REPOSITORY}/astroport:${DOCKER_IMAGE_TAG} image: ${DOCKER_REPOSITORY}/astroport:${DOCKER_IMAGE_TAG}
labels: labels:
- SERVICE_1234_CHECK_HTTP=/test - SERVICE_1234_CHECK_HTTP=/test

View File

@ -12,10 +12,12 @@ services:
restart: unless-stopped restart: unless-stopped
tty: true tty: true
volumes: volumes:
- data:/home/zen/Astroport:cached
- home:/home/zen/.zen/game/players:delegated - home:/home/zen/.zen/game/players:delegated
- ipfs:/home/zen/.ipfs:cached,ro - ipfs:/home/zen/.ipfs:cached,ro
working_dir: /home/zen working_dir: /home/zen
volumes: volumes:
data:
home: home:
ipfs: ipfs:

View File

@ -1,10 +1,7 @@
COMPOSE_FILE_VDI := true COMPOSE_FILE_VDI := true
COMPOSE_IGNORE_ORPHANS := true
DOCKER_IMAGES_MYOS := x2go:xfce-debian DOCKER_IMAGES_MYOS := x2go:xfce-debian
ENV_VARS += HOST_ASTROPORT_SERVICE_DOMAIN HOST_ASTROPORT_SERVICE_NAME HOST_ASTROPORT_SERVICE_1234_TAGS ENV_VARS += HOST_ASTROPORT_SERVICE_1234_TAGS
HOST_ASTROPORT_SERVICE_DOMAIN ?= $(firstword $(DOMAIN)) HOST_ASTROPORT_SERVICE_1234_TAGS ?= urlprefix-astroport.$(DOMAIN)/
HOST_ASTROPORT_SERVICE_NAME ?= astroport
HOST_ASTROPORT_SERVICE_1234_TAGS ?= $(call tagprefix,HOST_ASTROPORT,1234)
HOST_ASTROPORT_UFW_UPDATE := 1234/tcp 12245:12445/tcp 45720/tcp HOST_ASTROPORT_UFW_UPDATE := 1234/tcp 12245:12445/tcp 45720/tcp
MAKE_VARS += SSH_PORT User host MAKE_VARS += SSH_PORT User host
SERVICE := astroport SERVICE := astroport

View File

@ -9,19 +9,25 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}" ME="${0##*/}"
start=`date +%s` start=`date +%s`
################################################################## SUDO [ $(id -u) -eq 0 ] && echo "LANCEMENT root INTERDIT. Utilisez un simple utilisateur du groupe \"sudo\" SVP" && exit 1
########################################################################
[ $(id -u) -eq 0 ] && echo "LANCEMENT root INTERDIT. " && exit 1
[[ ! $(groups | grep -w sudo) ]] && echo "AUCUN GROUPE \"sudo\" : su -; usermod -aG sudo $USER" && exit 1
################################################################### IPFS
######################################################################## ########################################################################
[[ ! $(which ipfs) ]] \ [[ ! $(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)" \ && 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" ]] \ && [[ $(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) \ && bash <(wget -qO- https://git.p2p.legal/qo-op/Astroport.ONE/raw/branch/master/kubo_v0.16.0_linux-amd64.install.sh)
|| echo "=== Installez IPFS KUBO puis relancez Install ==="
[[ ! $(which ipfs) ]] && echo "INSTALL IPFS PLEASE" && exit 1
#################################################################### TEST #### 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
# MAIN # SI AUCUNE CLEF DE STATION... # MAIN # SI AUCUNE CLEF DE STATION...
if [[ ! -d ~/.zen/game/players/ ]]; if [[ ! -d ~/.zen/game/players/ ]];
@ -38,11 +44,11 @@ echo "tail -f /tmp/install.errors.log"
echo "##################################################" echo "##################################################"
echo ; echo "Mise à jour des dépots de votre distribution..." echo ; echo "Mise à jour des dépots de votre distribution..."
#~ [[ $XDG_SESSION_TYPE == 'x11' ]] && sudo add-apt-repository ppa:obsproject/obs-studio [[ $XDG_SESSION_TYPE == 'x11' ]] && sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update sudo apt-get update
for i in x11-utils xclip zenity chromium kodi; 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 if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
[[ $XDG_SESSION_TYPE == 'x11' ]] && sudo apt install -y $i; [[ $XDG_SESSION_TYPE == 'x11' ]] && sudo apt install -y $i;
@ -54,7 +60,7 @@ echo "#############################################"
echo "######### PATIENCE ####" echo "######### PATIENCE ####"
echo "#############################################" echo "#############################################"
for i in git make fail2ban npm netcat-traditional inotify-tools curl net-tools libsodium* libcurl4-openssl-dev 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 if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i sudo apt install -y $i
@ -66,7 +72,7 @@ echo "#############################################"
echo "######### PATIENCE ######" echo "######### PATIENCE ######"
echo "#############################################" echo "#############################################"
# removed : sqlite # removed : sqlite
for i in qrencode ca-certificates basez jq bc file gawk yt-dlp ffmpeg dnsutils ntpdate v4l-utils espeak vlc mp3info musl-dev openssl* detox nmap httrack html2text ssmtp imagemagick; do for i in qrencode basez jq bc file gawk yt-dlp ffmpeg dnsutils ntpdate v4l-utils espeak vlc mp3info musl-dev openssl* detox nmap httrack html2text ssmtp imagemagick; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i sudo apt install -y $i
@ -75,33 +81,25 @@ for i in qrencode ca-certificates basez jq bc file gawk yt-dlp ffmpeg dnsutils n
fi fi
done done
#### GIT CLONE ###############################################################
echo "=== CLONAGE CODE '~/.zen/Astroport.ONE' depuis https://git.p2p.legal"
mkdir -p ~/.zen
cd ~/.zen
git clone --depth 1 https://git.p2p.legal/qo-op/Astroport.ONE.git
# TODO INSTALL FROM IPFS / IPNS
echo "#############################################" echo "#############################################"
echo "######### PATIENCE ############" echo "######### PATIENCE ############"
echo "#############################################" echo "#############################################"
########################################################## ##########################################################
echo "### INSTALL TW node.js" echo "### INSTALL TW node.js"
sudo npm install -g tiddlywiki sudo npm install -g tiddlywiki sjcl-cli
[[ $? != 0 ]] && echo "INSTALL tiddlywikiFAILED." && echo "INSTALL tiddlywiki FAILED." >> /tmp/install.errors.log && continue [[ $? != 0 ]] && echo "INSTALL tiddlywikiFAILED." && echo "INSTALL tiddlywiki FAILED." >> /tmp/install.errors.log && continue
echo "#############################################" echo "#############################################"
echo "######### PATIENCE #################" echo "######### PATIENCE #################"
echo "#############################################" echo "#############################################"
# echo "## INSTALLATION AstroGEEK OpenCV = 'Intelligence Amie' - DEV - " ##########################################################
echo "## INSTALLATION AstroGEEK OpenCV = 'Intelligence Amie' - DEV - "
# sudo apt-get install python3-opencv -y # sudo apt-get install python3-opencv -y
## MAILJET SSMTP RELAYING : ADD YOUR CREDENTIALS ## MAILJET SSMTP RELAYING : ADD YOUR CREDENTIALS
sudo cp ~/.zen/Astroport.ONE/templates/.ssmtprc /etc/ssmtp/ssmtp.conf sudo cp ~/.zen/Astroport.ONE/templates/.ssmtprc /etc/ssmtp/ssmtp.conf
sudo ln -s /usr/sbin/ssmtp /usr/bin/ssmtp sudo chmod 600 /etc/ssmtp/ssmtp.conf
sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chgrp mail /etc/ssmtp/ssmtp.conf
echo "$USER:support@g1sms.fr:mail.asycn.io:587" | (sudo su -c 'tee -a /etc/ssmtp/revaliases') echo "$USER:support@g1sms.fr:mail.asycn.io:587" | (sudo su -c 'tee -a /etc/ssmtp/revaliases')
@ -247,54 +245,25 @@ echo "# ADDING <<<Astroport>>> DESKTOP SHORTCUT"
mkdir -p ~/.zen/tmp mkdir -p ~/.zen/tmp
echo "#############################################" echo "#############################################"
## INSTALL yt-dlp & SYMLINK youtube-dl
~/.zen/Astroport.ONE/youtube-dl.sh
## SYMLINK youtube-dl TO yt-dlp
sudo ln -s /usr/local/bin/yt-dlp /usr/local/bin/youtube-dl
which youtube-dl
echo "#############################################" echo "#############################################"
echo "#############################################" echo "#############################################"
## Desktop install ## Desktop install
echo "Astroport.ONE INSTALL" echo "Astroport.ONE INSTALL"
end=`date +%s` end=`date +%s`
echo Execution time was `expr $end - $start` seconds. echo Execution time was `expr $end - $start` seconds.
echo "#############################################" echo "#############################################"
echo "%%%%%%%%%%%%%%%%%%%%" echo "# START VISA ENGINE : ~/.zen/Astroport.ONE/start.sh"
echo "VOUS AVEZ DEJA UN COMPTE SUR GCHANGE ?" echo "#############################################"
echo " Saisissez vos identifiants" echo
echo "%%%%%%%%%%%%%%%%%%%%" echo "Démarrer en mode Aventure. Tapez ENTRER."
echo read ADVENTURE
echo "Sinon Tapez 2 fois sur ENTRER." [[ $ADVENTURE ]] && ~/.zen/Astroport.ONE/start.sh \
read SALT || ~/.zen/Astroport.ONE/adventure/adventure.sh
[[ $SALT ]] && echo "Entrez votre mot de passe : "
read PEPPER
[[ $SALT && ! $PEPPER ]] && SALT=""
~/.zen/Astroport.ONE/tools/VISA.new.sh "$SALT" "$PEPPER"
echo "#############################################"
if [[ $XDG_SESSION_TYPE == 'x11' ]]; then
##########################################################
echo "EXPERIMENTAL ### INIT KODI PAR IPFS ## "
read KODI
if [[ $KODI ]]; then
mkdir -p ~/.zen/tmp/kodi
echo "PATIENTEZ..."
ipfs get -o ~/.zen/tmp/kodi/ /ipfs/Qmc763hnsuTqSTDBNagmzca4fSzmcTp9kHoeosaPKC8QvK
echo '## KODI INSTALL FRANCETV + VSTREAM + FILMSFORACTION'
cp -Rf ~/.zen/tmp/kodi/* ~/.kodi/ \
&& cp -Rf ~/.zen/Astroport.ONE/templates/.uqld /tmp && cd /tmp/.uqld \
&& g++ -o uqload_downloader uqload_downloader.cpp Downloader.cpp -lcurl \
&& [[ -f uqload_downloader ]] && sudo mv uqload_downloader /usr/local/bin/ \
&& sudo ln -s ~/.zen/Astroport.ONE/tools/download_from_kodi_log.sh /usr/local/bin/download_from_kodi_log
cd $MY_PATH
fi
fi
else else

186
start.sh
View File

@ -14,15 +14,185 @@ ME="${0##*/}"
TS=$(date -u +%s%N | cut -b1-13) TS=$(date -u +%s%N | cut -b1-13)
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
echo "cron_VRFY.sh ON"
###################################################
${MY_PATH}/tools/cron_VRFY.sh ON
echo "(RE)STARTING 12345.sh" echo "(RE)STARTING 12345.sh"
################################################### ###################################################
[[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) killall 12345.sh; killall "_12345.sh"; killall nc
# killall "12345.sh"; killall "_12345.sh"; killall "nc"; killall "command.sh"
mkdir -p ~/.zen/tmp mkdir -p ~/.zen/tmp
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log & ~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
echo $! > ~/.zen/.pid && wait
sleep 1
echo "HTTP API : http://$myIP:1234"
cat ~/.zen/tmp/12345.log
echo "API DEBUG : tail -f ~/.zen/tmp/12345.log"
###################################################
echo '
_ ____ _____ ____ ___ ____ ___ ____ _____ ___ _ _ _____
/ \ / ___|_ _| _ \ / _ \| _ \ / _ \| _ \_ _| / _ \| \ | | ____|
/ _ \ \___ \ | | | |_) | | | | |_) | | | | |_) || | | | | | \| | _|
/ ___ \ ___) || | | _ <| |_| | __/| |_| | _ < | | | |_| | |\ | |___
/_/ \_\____/ |_| |_| \_\\___/|_| \___/|_| \_\|_| \___/|_| \_|_____|
Ambassade numérique pair à pair sur IPFS.
@@@@@@@@@@@@@@@@@@
ASTROPORT
VISA : MadeInZion
@@@@@@@@@@@@@@@@@@'
echo
## VERIFY SOFTWARE DEPENDENCIES
[[ ! $(which ipfs) ]] && echo "EXIT. Vous devez avoir installé ipfs CLI sur votre ordinateur" && echo "https://dist.ipfs.io/#go-ipfs" && exit 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 ]] && echo "Lancez 'ipfs daemon' SVP sudo systemctl start ipfs" && exit 1
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
echo 'PRESS ENTER... '; read
## CREATE AND OR CONNECT USER
PS3='Astronaute connectez votre PLAYER ___ '
players=("NOUVEAU VISA" "IMPORT PLAYER" $(ls ~/.zen/game/players 2>/dev/null))
## MULTIPLAYER
select fav in "${players[@]}"; do
case $fav in
"NOUVEAU VISA")
${MY_PATH}/tools/VISA.new.sh
fav=$(cat ~/.zen/tmp/PSEUDO 2>/dev/null) && rm ~/.zen/tmp/PSEUDO
echo "Astronaute $fav bienvenue dans le jeu de terraformation forêt jardin MadeInZion"
exit
;;
"IMPORT PLAYER")
echo "'Identifiant'"
read SALT
echo "'Mot de passe'"
read 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
;;
"")
echo "Choix obligatoire. exit"
exit
;;
*) echo "Salut $fav"
break
;;
esac
done
PLAYER=$fav
pass=$(cat ~/.zen/game/players/$PLAYER/.pass 2>/dev/null)
########################################## DEVEL
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/${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/$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"
echo "ENTREE ACCORDEE"
echo
ASTRONAUTENS=$(ipfs key list -l | grep -w "$PLAYER" | cut -d ' ' -f 1)
echo "$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) TW/Moa"
echo "http://$myIP:8080/ipns/$ASTRONAUTENS"
echo "Activation Réseau P2P Astroport !"
echo
PS3="$PLAYER choisissez : __ "
choices=("AJOUTER VLOG" "CREER UN VOEU" "IMPRIMER QRVOEU" "IMPRIMER VISA" "EXPORTER VISA" "SUPPRIMER VISA" "QUITTER")
select fav in "${choices[@]}"; do
case $fav in
"IMPRIMER VISA")
echo "IMPRESSION"
${MY_PATH}/tools/VISA.print.sh
;;
"EXPORTER VISA")
echo "EXPORT IDENTITE ASTRONAUTE"
du -h ~/.zen/game/players/$PLAYER/
echo "MANUAL BACKUP ZIP ~/.zen/game/players/$PLAYER/"
## EXPORT TW + VOEUX IPNS KEYS
break
;;
"SUPPRIMER VISA")
echo "ATTENTION SUPPRESSION DEFINITIVE !!"
echo "Enter to continue. Ctrl+C to stop"
read
ipfs key rm $PLAYER; ipfs key rm $G1PUB;
for voeu in $(ls ~/.zen/game/players/$PLAYER/voeux/); 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"
rm -Rf ~/.zen/game/players/$PLAYER
break
;;
"AJOUTER VLOG")
echo "Lancement Webcam..."
${MY_PATH}/tools/vlc_webcam.sh "$PLAYER"
;;
"CREER UN VOEU")
echo "QRCode à coller sur les lieux ou objets portant une Gvaleur"
cp ~/.zen/game/players/$PLAYER/ipfs/moa/index.html ~/.zen/tmp/$PLAYER.html
${MY_PATH}/ASTROBOT/G1Voeu.sh "" "$PLAYER" "~/.zen/tmp/$PLAYER.html"
DIFF=$(diff ~/.zen/game/players/$PLAYER/ipfs/moa/index.html ~/.zen/tmp/$PLAYER.html)
if [[ $DIFF ]]; then
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
cp ~/.zen/game/players/$PLAYER/ipfs/moa/.chain \
~/.zen/game/players/$PLAYER/ipfs/moa/.chain.$(cat ~/.zen/game/players/$PLAYER/ipfs/moa/.moats)
TW=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ipfs/moa/index.html | tail -n 1)
ipfs name publish --allow-offline -t 72h --key=$PLAYER /ipfs/$TW
echo $TW > ~/.zen/game/players/$PLAYER/ipfs/moa/.chain
echo $MOATS > ~/.zen/game/players/$PLAYER/ipfs/moa/.moats
fi
echo "================================================"
echo "$PLAYER : http://$myIP:8080/ipns/$ASTRONAUTENS"
echo "================================================"
;;
"IMPRIMER QRVOEU")
${MY_PATH}/tools/VOEUX.print.sh $PLAYER
;;
"QUITTER")
echo "CIAO" && exit 0
;;
"")
echo "Mauvais choix."
;;
esac
done
exit 0

25
stop.sh
View File

@ -1,25 +0,0 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
MY_PATH="`dirname \"$0\"`"
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
echo "ASTROPORT.ONE $USER@$HOSTNAME
@@@@@@@@@@@@@@@@@@
STOP AT $MOATS
@@@@@@@@@@@@@@@@@@"
echo
echo "STOPPING PROCESS & CRON"
###################################################
killall 12345.sh; killall "_12345.sh"; killall nc
###################################################
${MY_PATH}/tools/cron_VRFY.sh OFF
exit 0

View File

@ -1,122 +0,0 @@
#include "Downloader.h"
#if !defined(WIN32) && !defined(_WIN32) && !defined(__WIN32__) && !defined(__NT__)
error_t fopen_s(FILE** f, const char* name, const char* mode)
{ // https://stackoverflow.com/questions/1513209/is-there-a-way-to-use-fopen-s-with-gcc-or-at-least-create-a-define-about-it
error_t ret = 0;
assert(f);
*f = fopen(name, mode);
if (!*f)
{
ret = errno;
}
return ret;
}
#endif
using namespace std;
Downloader::Downloader()
{
m_fp = nullptr;
m_downloadCallback = nullptr;
curl_global_init(CURL_GLOBAL_DEFAULT);
m_curl = curl_easy_init();
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(m_curl, CURLOPT_COOKIEFILE, "");
curl_easy_setopt(m_curl, CURLOPT_COOKIEJAR, "");
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, this);
}
Downloader::Downloader(std::string uqUrl, std::string outputFile) : Downloader()
{
setUqUrl(uqUrl);
setOutputFile(outputFile);
}
void Downloader::setUqUrl(std::string uqUrl)
{
m_uqUrl = uqUrl;
}
void Downloader::setOutputFile(std::string outputFile)
{
m_outputFile = outputFile;
}
void Downloader::setDownloadCallback(void* callback)
{
if (callback != nullptr)
{
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, false);
m_downloadCallback = callback;
}
}
Downloader::~Downloader()
{
if (m_curl)
{
curl_easy_cleanup(m_curl);
curl_global_cleanup();
}
if (m_fp != nullptr)
{
fclose(m_fp);
}
}
size_t Downloader::writefunc(void* ptr, size_t size, size_t nmemb, std::string* s)
{
s->append(static_cast<char*>(ptr), size * nmemb);
return size * nmemb;
}
void Downloader::download()
{
if (m_uqUrl == "" || m_outputFile == "")
{
throw string("Error: please specify URL and output file");
}
if (!m_curl)
{
throw string("Error: curl init");
}
if (uqdCheckAccess(m_outputFile.c_str(), 0) == 0)
{
throw string("Error: " + m_outputFile + " already exists");
}
fopen_s(&m_fp, m_outputFile.c_str(), "wb");
string strHTML;
curl_easy_setopt(m_curl, CURLOPT_URL, m_uqUrl.c_str());
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, &Downloader::writefunc);
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, &strHTML);
m_res = curl_easy_perform(m_curl);
if (m_res != CURLE_OK)
{
throw string("Error: curl_easy_perform() failed: " + string(curl_easy_strerror(m_res)));
}
size_t posBegVid = strHTML.find("sources: [\"https://");
size_t posEndVid = strHTML.find("/v.mp4\"]");
if (posBegVid == std::string::npos || posEndVid == std::string::npos)
{
throw string("Video URL not found");
}
string videoURL = strHTML.substr(posBegVid + 11, posEndVid - posBegVid - 5);
if (m_downloadCallback != nullptr)
{
curl_easy_setopt(m_curl, CURLOPT_XFERINFOFUNCTION, m_downloadCallback);
}
curl_easy_setopt(m_curl, CURLOPT_URL, videoURL.c_str());
curl_easy_setopt(m_curl, CURLOPT_REFERER, m_uqUrl.c_str());
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, NULL);
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, m_fp);
m_res = curl_easy_perform(m_curl);
if (m_res != CURLE_OK)
{
throw string("Error: curl_easy_perform() failed: " + string(curl_easy_strerror(m_res)));
}
}

View File

@ -1,34 +0,0 @@
#pragma once
#include <iostream>
#include <string>
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
#include <io.h>
#define uqdCheckAccess(pathname, mode) _access(pathname, mode)
#else
#include <unistd.h>
#include <cassert>
#define uqdCheckAccess(pathname, mode) access(pathname, mode)
error_t fopen_s(FILE** f, const char* name, const char* mode);
#endif
#include <curl/curl.h>
class Downloader
{
public:
Downloader();
Downloader(std::string uqUrl, std::string outputFile);
~Downloader();
void setUqUrl(std::string uqUrl);
void setOutputFile(std::string outputFile);
void setDownloadCallback(void* callback);
void download();
private:
static size_t writefunc(void *curl, size_t size, std::size_t nmemb, std::string *s);
std::string m_uqUrl, m_outputFile;
CURL* m_curl;
CURLcode m_res;
FILE* m_fp;
void* m_downloadCallback;
};

View File

@ -1,43 +0,0 @@
#include <iostream>
#include <iomanip>
#include "Downloader.h"
using namespace std;
int downloadCallback(void* p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
int main(int argc, char *argv[])
{
if (argc < 3)
{
cerr << "Usage: " << argv[0] << "https://uqload.com/embed-xxxxxxx.html movie.mp4" << endl;
return -1;
}
string pageInit = string(argv[1]), outputFile=string(argv[2]);
Downloader *uqDownloader=new Downloader(pageInit, outputFile);
uqDownloader->setDownloadCallback((void*)downloadCallback);
try
{
uqDownloader->download();
}
catch (const string& e)
{
cerr << e << endl;
}
return 0;
}
int downloadCallback(void* p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow)
{
if (dltotal != 0.0)
{
cout << setprecision(3) << ((double)dlnow / (double)dltotal) * 100 << " %\r" << flush;
}
return 0;
}
/**
https://uqload.com/embed-h63yfu9dkw1r.html
test.mp4
*/

View File

@ -1 +1 @@
[{"title":"$:/ipfs/saver/api/http/local/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"_NID_"}] [{"title":"$:/ipfs/saver/api/http/local/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://ipfs.localhost:5001"}]

View File

@ -1 +1 @@
[{"title":"$:/ipfs/saver/gateway/local/myip","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"_NID_"}] [{"title":"$:/ipfs/saver/gateway/local/myip","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://ipfs.localhost:8080"}]

View File

@ -39,15 +39,15 @@ Content-Type: text/html; charset=UTF-8
</style> </style>
<title>[Astroport] - IPFS BIOS - G1 / Ŋ1 - Confidence Networks (_HOSTNAME_)</title> <title>[Astroport](_HOSTNAME_) - IPFS BIOS - Interplanetray File System + Basic Input Output System + Scuttlebut Confidence Layer Ŋ1 </title>
</head> </head>
<body> <body>
<center> <center>
<h2>IPFS BIOS<br> - Astroport Ŋ1 Explorer -</h2> <h2>IPFS BIOS<br> - TW Astroport Ŋ1 -</h2>
<div id="yellow"> <div id="yellow">
<h3><a href="http://127.0.0.1:12345"> >>> BunkerBOX (◕‿‿◕) Ready <<< </a></h3> <h3><a href="http://127.0.0.1:12345"> >>> IPFS (◕‿‿◕) FORMAT <<< </a></h3>
</div> </div>
<br> <br>
@ -56,11 +56,10 @@ Content-Type: text/html; charset=UTF-8
<form action = "http://127.0.0.1:1234" method = "GET"> <form action = "http://127.0.0.1:1234" method = "GET">
<br> <br>
<h2> <h2>
INSCRIPTION<br><br> Déjà inscrit<br>
Phrase Une : <input name=salt value=''></br> Phrase Une : <input name=salt value=''></br>
Phrase Deux : <input name=pepper value=''></br> Phrase Deux : <input name=pepper value=''></br>
TW <input type="hidden" id="g1pub" name="g1pub" value="on"></br> ( TW officiel <input type="checkbox" id="official" name="official"> - Visiteur <input type="checkbox" id="g1pub" name="g1pub" checked> )</br>
Email : <input name=email value=''></br>
</br> </br>
<input type='submit' value='[(♥‿‿♥)]'> <input type='submit' value='[(♥‿‿♥)]'>

View File

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>[Astroport] TW :: Station _HOSTNAME_ (_IPFSNODEID_) </title> <title>[Astroport] Ouvrez votre TW :: Station _HOSTNAME_ (_IPFSNODEID_) </title>
<link rel="icon" type="image/png" href="http://127.0.0.1:8080/ipfs/QmaCh8mywWfxkXF3JziFzqZS6yZFo3eNS5fSfnzJqdSQvX/logo.png" /> <link rel="icon" type="image/png" href="http://127.0.0.1:8080/ipfs/QmaCh8mywWfxkXF3JziFzqZS6yZFo3eNS5fSfnzJqdSQvX/logo.png" />
<link rel="stylesheet" href="http://127.0.0.1:8080/ipfs/QmaCh8mywWfxkXF3JziFzqZS6yZFo3eNS5fSfnzJqdSQvX/decoration.css" type="text/css" /> <link rel="stylesheet" href="http://127.0.0.1:8080/ipfs/QmaCh8mywWfxkXF3JziFzqZS6yZFo3eNS5fSfnzJqdSQvX/decoration.css" type="text/css" />
<link rel="stylesheet" href="http://127.0.0.1:8080/ipfs/QmaCh8mywWfxkXF3JziFzqZS6yZFo3eNS5fSfnzJqdSQvX/layout.css" type="text/css" /> <link rel="stylesheet" href="http://127.0.0.1:8080/ipfs/QmaCh8mywWfxkXF3JziFzqZS6yZFo3eNS5fSfnzJqdSQvX/layout.css" type="text/css" />

View File

@ -1 +0,0 @@
[{"text":"_PLAYERSFEED_","tags":"","title":"$:/plugins/astroport/lightbeams/state/subscriptions"}]

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,6 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
[[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost" [[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
IPFSNODEID=$(ipfs id -f='<id>\n') IPFSNODEID=$(ipfs id -f='<id>\n')
export PLAYERFEEDS=""
ME="${0##*/}" ME="${0##*/}"
######################################################################### CONNECT PLAYER WITH GCHANGE ######################################################################### CONNECT PLAYER WITH GCHANGE
@ -54,32 +53,29 @@ if [[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/cesium.json ]]; then
# SITE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.socials' 2>/dev/null) # SITE=$(cat ~/.zen/game/players/${PLAYER}/ipfs/gchange.json | jq -r '.socials' 2>/dev/null)
######################################################################## ########################################################################
echo "GCHANGE+ PROFILE https://gchange.fr" 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 "https://ipfs.copylaradio.com/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" [[ ! $? == 0 ]] && echo "GCHANGE PROFILE CREATION FAILED"
echo ## SET CESIUM WALLET
## TODO : GET THE MEMBER KEY TO SEND MESSAGE THROUGH CESIUM+ ########################################################################
echo "${PLAYER} CESIUM+ PROFILE https://demo.cesium.app/#/app/wot/lg?q=$G1PUB"
#~ ## SET CESIUM WALLET ########################################################################
#~ ######################################################################## $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+
#~ echo "CESIUM+ https://demo.cesium.app/#/app/wot/lg?q=$G1PUB" [[ ! $? == 0 ]] && echo "CESIUM PROFILE CREATION FAILED"
#~ ########################################################################
#~ $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 fi
## GET PROFILE BACK ## 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://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 $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 "### ${PLAYER} #################" echo "### ${PLAYER} ##########################################################"
echo "SCANNING - $G1PUB STAR FRIENDS" echo "SCANNING - $G1PUB Gchange FRIENDS"
echo "########################################################################" echo "########################################################################"
################## CHECKING WHO GAVE ME STARS ################## CHECKING WHO GAVE ME STARS
################## BOOTSTRAP LIKES THEM BACK ################## BOOTSTRAP LIKES THEM BACK
@ -93,7 +89,7 @@ echo "Checking received stars"
-k ~/.zen/game/players/${PLAYER}/secret.dunikey \ -k ~/.zen/game/players/${PLAYER}/secret.dunikey \
-n "https://data.gchange.fr" stars > ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json -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') ]] && echo "Activez votre Toile de Confiance Ŋ1 sur GChange" && exit 0 [[ ! $(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 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 # echo "cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/received_stars.json | jq -r" # DEBUG
@ -102,10 +98,10 @@ for liking_me in $(cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/liking_me | sort | uni
do do
[[ "${liking_me}" == "" ]] && continue ## Protect from empty line !! [[ "${liking_me}" == "" ]] && continue ## Protect from empty line !!
echo "........................." echo "........................."
FRIENDNS=$(~/.zen/Astroport.ONE/tools/g1_to_ipfs.py ${liking_me}) ASTRONAUTENS=$(~/.zen/Astroport.ONE/tools/g1_to_ipfs.py ${liking_me})
echo "===========================" echo "==========================="
echo "${liking_me} IS LIKING ME" echo "${liking_me} IS LIKING ME"
echo "TW ? https://ipfs.copylaradio.com/ipns/$FRIENDNS " echo "TW ? http://tube.copylaradio.com:8080/ipns/$ASTRONAUTENS "
##### CHECKING IF WE LIKE EACH OTHER Ŋ1 LEVEL ##### CHECKING IF WE LIKE EACH OTHER Ŋ1 LEVEL
echo "Receiving Stars : cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json | jq -r" echo "Receiving Stars : cat ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/${liking_me}.Gstars.json | jq -r"
@ -148,21 +144,17 @@ do
echo "Getting $FRIENDTITLE 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); 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) LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
echo "$LIBRA/ipns/$FRIENDNS" echo "$LIBRA/ipns/$ASTRONAUTENS"
echo "http://$myIP:8080/ipns/$FRIENDNS ($YOU)" echo "http://$myIP:8080/ipns/$ASTRONAUTENS ($YOU)"
[[ $YOU ]] && ipfs --timeout 17s cat /ipns/$ASTRONAUTENS > ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html
# DISPLAY TIMER [[ ! -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"
${MY_PATH}/displaytimer.sh 17 &
[[ $YOU ]] && ipfs --timeout 17s cat /ipns/$FRIENDNS > ~/.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/$FRIENDNS"
## PLAYER TW EXISTING ? ## PLAYER TW EXISTING ?
if [ ! -s ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html ]; then if [ ! -s ~/.zen/game/players/${PLAYER}/FRIENDS/${liking_me}/index.html ]; then
## AUCUN VISA ASTRONAUTE ENVOYER UN MESSAGE PAR GCHANGE ## AUCUN VISA ASTRONAUTE ENVOYER UN MESSAGE PAR GCHANGE
echo "AUCUN TW ACTIF. PREVENONS LE" 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 "HEY BRO !" -m "G1 TW BunkerBOX >>> (⌐■_■) <<< https://ipfs.copylaradio.com/ipns/$ASTRONAUTENS >>> (ᵔ◡◡ᵔ) <<< " $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 else
@ -179,25 +171,12 @@ do
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${FPLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]]' --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 [[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.rss.json ]] && echo "NO ${FPLAYER} RSS - CONTINUE -" && continue
tiddlywiki --load ${FTW} \
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${FPLAYER}.lightbeam-key.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key'
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.lightbeam-key.json ]] && echo "NO ${FPLAYER} lightbeam-key - CONTINUE -" && continue
ASTRONAUTEFEED=$(cat ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.lightbeam-key.json | jq -r .[].text)
## ADD THIS FPLAYER RSS FEED INTO PLAYER TW ## ADD THIS FPLAYER RSS FEED INTO PLAYER TW
## PUSH DATA TO 12345 SWARM KEY ## PUSH DATA TO 12345 SWARM KEY
mkdir -p ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER} 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 cp -f ~/.zen/game/players/${PLAYER}/ipfs/${FPLAYER}.rss.json ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/${FPLAYER}.rss.json
export FRIENDSFEEDS="$ASTRONAUTEFEED\n$FRIENDSFEEDS" ## TODO INSERT INTO $:/plugins/astroport/lightbeams/state/subscriptions
echo "$FRIENDSFEEDS" > ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/FRIENDSFEEDS
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )" $FRIENDSFEEDS
export IFRIENDHEAD="<a target='you' href='/ipns/"$FRIENDNS"'>$$FRIENDTITLE</a>$IFRIENDHEAD"
echo "$IFRIENDHEAD" > ~/.zen/tmp/${IPFSNODEID}/rss/${PLAYER}/IFRIENDHEAD
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )" $IFRIENDHEAD
echo "APP=RSS : PLAYER FPLAYER RSS PUBLICATION READY" echo "APP=RSS : PLAYER FPLAYER RSS PUBLICATION READY"
@ -222,7 +201,7 @@ do
else else
echo "BRO?" 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}/" $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 fi

71
tools/FRIENDS.init.sh Executable file
View File

@ -0,0 +1,71 @@
#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 2020.03.24
# 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##*/}"
countMErunning=$(ps auxf --sort=+utime | grep -w $ME | grep -v -E 'color=auto|grep' | wc -l)
[[ $countMErunning -gt 2 ]] && echo "$ME already running $countMErunning time" && exit 0
start=`date +%s`
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 ]] && echo "ipfs NOT RUNNING. EXIT" && exit 1
G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) && [[ ! $G1PUB ]] && echo "ERREUR G1PUB. EXIT" && exit 1
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) || ( echo "noipfsid" && exit 1 )
########################################################################
########################################################################
# This script used to initialize 'FRIENDS' data and star.level with beetween crew and new Astronaut
# Astronaut is sendind level3 to Captain / # Captain send level1 to Astronaut
# astrXbian keychains are written to disk... So IPFS obey to this organisation.
########################################################################
########################################################################
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
# Check who is currently current connected PLAYER
PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) || ( echo "noplayer" && exit 1 )
PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null) || ( echo "nopseudo" && exit 1 )
G1PUB=$(cat ~/.zen/game/players/.current/.g1pub 2>/dev/null) || ( echo "nog1pub" && exit 1 )
IPFSNODEID=$(cat ~/.zen/game/players/.current/.ipfsnodeid 2>/dev/null) || ( echo "noipfsnodeid" && exit 1 )
# Astroport Station "Captain" connected?
source ~/.zen/ipfs.sync; echo "CAPTAIN is $CAPTAIN $(${MY_PATH}/face.sh cool)"
# New Astronaut is entering Astroport
# UPDATING players friend relations
# Inform Captain.
for player in $(ls ~/.zen/game/players/); do
# $player g1pub
g1pub=$(cat ~/.zen/game/players/$player/.g1pub) || continue
ipfsnodeid=$(cat ~/.zen/game/players/$player/.ipfsnodeid) || continue
[[ $PLAYER == $player ]] && continue
## Adding ME as Astronauts Friend. Sharing Stars.
# Inform Network / Application levels. Friend of Friends appears here.
echo "Adding $player to my astrXbian ~/.zen/game/players/$PLAYER/ipfs/.$IPFSNODEID/FRIENDS/$g1pub"
read
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.$IPFSNODEID/FRIENDS/$g1pub # Opening FRIEND RELATION
echo "$player" > ~/.zen/game/players/$PLAYER/ipfs/.$IPFSNODEID/FRIENDS/$g1pub/player # This Astronaut become my level 1 friend
echo "1" > ~/.zen/game/players/$PLAYER/ipfs/.$IPFSNODEID/FRIENDS/$g1pub/stars.level # This Astronaut become my level 1 friend
echo "$ipfsnodeid" > ~/.zen/game/players/$PLAYER/ipfs/.$IPFSNODEID/FRIENDS/$g1pub/ipfsnodeid # This Astronaut become my level 1 friend
if [[ $player == "$CAPTAIN" ]]; then
echo "Cet Astronaute est le CAPITAINE. Confiance 3 !!!"
echo "3" > ~/.zen/game/players/$PLAYER/ipfs/.$IPFSNODEID/FRIENDS/$g1pub/stars.level # Ugrade to Level 3 Friend
# Need to receive confidence back before acting as Astronaut. 3 days to compare dreams & reality.
fi
echo "Adding myself to $player ~/.zen/game/players/$player/ipfs/.$ipfsnodeid/FRIENDS/$G1PUB"
read
mkdir -p ~/.zen/game/players/$player/ipfs/.$ipfsnodeid/FRIENDS/$G1PUB # AUTO SYMETRIC RELATION TODO : Not overpassing anymore ?
echo "$PLAYER" > ~/.zen/game/players/$player/ipfs/.$ipfsnodeid/FRIENDS/$G1PUB/player # This Astronaut become my level 1 friend
echo "1" > ~/.zen/game/players/$player/ipfs/.$ipfsnodeid/FRIENDS/$G1PUB/stars.level
echo "$IPFSNODEID" > ~/.zen/game/players/$player/ipfs/.$ipfsnodeid/FRIENDS/$G1PUB/ipfsnodeid # TODO : Not overpassing anymore ?
echo "Compromis de Confiance 1 ajouté à $player"
done

View File

@ -29,16 +29,12 @@ IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
################################################################################ ################################################################################
myIP=$(hostname -I | awk '{print $1}' | head -n 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])/") 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="localhost" [[ ! $myIP || $isLAN ]] && myIP="ipfs.localhost"
[[ $isLAN ]] && myIPFSGW="http://ipfs.localhost:8080" && myASTROPORT="http://astroport.localhost:1234" ## LAN STATION
[[ ! $isLAN || $USER == "zen" ]] && myIPFSGW="https://ipfs.copylaradio.com" && myASTROPORT="https://astroport.copylaradio.com" ## WAN STATION
################################################################################ ################################################################################
## CHECK if PLAYER resolve any ASTRONAUTENS ## CHECK if PLAYER resolve any ASTRONAUTENS
[[ ${PLAYER} ]] && ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1) [[ ${PLAYER} ]] && ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1)
[[ ${ASTRONAUTENS} ]] && echo "WARNING IPNS $PLAYER EXISTANT ${myIPFSGW}/ipns/${ASTRONAUTENS} - EXIT -" && exit 0 [[ ${ASTRONAUTENS} ]] && echo "IPNS $PLAYER EXISTANT http://$myIP:8080/${ASTRONAUTENS} !! DO NOTHING - EXIT -" && exit 0
## Chargement TW !!! ## Chargement TW !!!
if [[ $SALT != "" && PEPPER != "" ]]; then if [[ $SALT != "" && PEPPER != "" ]]; then
@ -52,7 +48,6 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
mkdir -p ~/.zen/tmp/${MOATS}/TW mkdir -p ~/.zen/tmp/${MOATS}/TW
echo "SCANNING /ipns/${ASTRONAUTENS}"
## GETTING LAST TW via IPFS or HTTP GW ## GETTING LAST TW via IPFS or HTTP GW
[[ $YOU ]] \ [[ $YOU ]] \
&& ipfs --timeout 20s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html && ipfs --timeout 20s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
@ -74,20 +69,17 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' 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) ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
if [[ $ASTROPORT ]]; then IPNSTAIL=$(echo $ASTROPORT | rev | cut -f 1 -d '/' | rev)
IPNSTAIL=$(echo $ASTROPORT | rev | cut -f 1 -d '/' | rev) echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
[[ $IPNSTAIL == $IPFSNODEID ]] \ [[ $IPNSTAIL == $IPFSNODEID ]] \
&& echo "UPDATING $PLAYER LOCAL CACHE ~/.zen/game/players/$PLAYER/ipfs/moa" \ && echo "UPDATING $PLAYER LOCAL CACHE ~/.zen/game/players/$PLAYER/ipfs/moa" \
&& mkdir -p ~/.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/ \ && cp ~/.zen/tmp/${MOATS}/TW/index.html ~/.zen/game/players/$PLAYER/ipfs/moa/ \
|| echo "PLAYER on $ASTROPORT Station" || echo "PLAYER on $ASTROPORT Station"
fi
# DO NOT CONTINUE # DO NOT CONTINUE
echo "TW ADDRESS IN USE" echo "VISA ALREADY EXISTING"
rm -Rf ~/.zen/tmp/${MOATS} rm -Rf ~/.zen/tmp/${MOATS}
@ -97,8 +89,7 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
fi fi
################################################################################ ################################################################################
TWMODEL="/ipfs/bafybeica3zeovko4pfatsbnlniaoq2lfe7i2oin6wohx6gwgixf655szwy" TWMODEL="/ipfs/bafybeihk2xserdii7wcnvojbyuyxx6qzlcgtzvraeucpyrhcfwy2ssvbhu"
# ipfs cat $TWMODEL > templates/twdefault.html
##################################################### # NEW PLAYER ############### ##################################################### # NEW PLAYER ###############
################################################################################ ################################################################################
echo "============================================= echo "=============================================
@ -122,16 +113,15 @@ PSEUDO=${PLAYER%%[0-9]*}
[[ ! $PSEUDO ]] && echo "Choisissez un pseudo : " && read PSEUDO [[ ! $PSEUDO ]] && echo "Choisissez un pseudo : " && read PSEUDO
PSEUDO=${PSEUDO,,} PSEUDO=${PSEUDO,,}
PSEUDO=${PSEUDO%%[0-9]*} PSEUDO=${PSEUDO%%[0-9]*}
[[ $(ls ~/.zen/game/players/$PSEUDO 2>/dev/null) ]] && echo "CE PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1 [[ $(ls ~/.zen/game/players/$PSEUDO* 2>/dev/null) ]] && echo "CE PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1
# PSEUDO=${PSEUDO,,} #lowercase # PSEUDO=${PSEUDO,,} #lowercase
[[ ! $PLAYER ]] && PLAYER=${PSEUDO}${RANDOM:0:2}$(${MY_PATH}/diceware.sh 1 | xargs)${RANDOM:0:2} \ [[ ! $PLAYER ]] && PLAYER=${PSEUDO}${RANDOM:0:2}$(${MY_PATH}/diceware.sh 1 | xargs)${RANDOM:0:2} \
&& echo "ADRESSE EMAIL ?" && 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 [[ -d ~/.zen/game/players/$PLAYER ]] && echo "FATAL ERROR $PLAYER NAME COLLISION. TRY AGAIN." && exit 1
[[ ! $PSEUDO ]] && PSEUDO="Anonymous" [[ ! $PSEUDO ]] && PSEUDO=$PLAYER
echo; echo "Génération de votre crypto identité PLAYER :"; sleep 1; echo "$PLAYER"; sleep 2 echo; echo "Génération de vos identités Astronaute (PLAYER):"; sleep 1; echo "$PLAYER"; sleep 2
# 6 DIGIT PASS CODE TO PROTECT QRSEC # 6 DIGIT PASS CODE TO PROTECT QRSEC
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7) PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
@ -144,8 +134,8 @@ PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
# echo "Votre clef moa_$PLAYER <=> $MOANS ($MOAKEYFILE)"; sleep 2 # echo "Votre clef moa_$PLAYER <=> $MOANS ($MOAKEYFILE)"; sleep 2
############################################################ ############################################################
echo echo
echo "Votre compte Gchange et portefeuille G1. echo "Compte Gchange et portefeuille G1.
Utilisez ces identifiants pour rejoindre la Monnaie Libre Utilisez ces identifiants pour rejoindre le réseau JUNE
$SALT $SALT
$PEPPER $PEPPER
@ -155,31 +145,18 @@ Rendez-vous sur https://gchange.fr"; sleep 3
echo; echo "Création de votre clef multi-accès..."; sleep 2 echo; echo "Création de votre clef multi-accès..."; sleep 2
echo; echo;
${MY_PATH}/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.dunikey "$SALT" "$PEPPER" ${MY_PATH}/keygen -t duniter -o /tmp/secret.dunikey "$SALT" "$PEPPER"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
[[ ! $G1PUB ]] && echo "Désolé. clef Cesium absente." && exit 1 [[ ! $G1PUB ]] && echo "Désolé. clef Cesium absente." && exit 1
## CREATE Player personnal files storage and IPFS publish directory ## CREATE Player personnal files storage and IPFS publish directory
mkdir -p ~/.zen/game/players/$PLAYER # Prepare PLAYER datastructure mkdir -p ~/.zen/game/players/$PLAYER # Prepare PLAYER datastructure
mkdir -p ~/.zen/tmp/
# PLAYER=geg-la_debrouille@super.chez-moi.com mv /tmp/secret.dunikey ~/.zen/game/players/$PLAYER/
YUSER=$(echo $PLAYER | cut -d '@' -f1) # YUSER=geg-la_debrouille
LYUSER=($(echo "$YUSER" | sed 's/[^a-zA-Z0-9]/\ /g')) # LYUSER=(geg la debrouille)
CLYUSER=$(printf '%s\n' "${LYUSER[@]}" | tac | tr '\n' '.' ) # CLYUSER=debrouille.la.geg.
YOMAIN=$(echo $PLAYER | cut -d '@' -f 2) # YOMAIN=super.chez-moi.com
echo "NEXT STYLE GW : https://ipfs.$CLYUSER$YOMAIN.$HOSTNAME"
#~ [[ ! $isLAN ]] && NID="https://ipfs.$CLYUSER$YOMAIN.$HOSTNAME" && WID="$NID/api"
NID="${myIPFSGW}" && WID="$NID/api"
[[ $isLAN ]] && NID="http://ipfs.localhost:8080" && WID="http://ipfs.localhost:5001"
### CREATE $NID ADDRESS FOR API & ROUND ROBIN FOR GW
cat ~/.zen/Astroport.ONE/templates/data/local.api.json | sed -i "s~_NID_~${WID}~g" > ~/.zen/tmp/${MOATS}/local.api.json
cat ~/.zen/Astroport.ONE/templates/data/local.gw.json | sed -i "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/$PLAYER/
# Create Player "IPNS Key" (key import) # Create Player "IPNS Key" (key import)
${MY_PATH}/keygen -t ipfs -o ~/.zen/game/players/$PLAYER/secret.player "$SALT" "$PEPPER" ${MY_PATH}/keygen -t ipfs -o ~/.zen/game/players/$PLAYER/secret.player "$SALT" "$PEPPER"
@ -192,17 +169,17 @@ NID="${myIPFSGW}" && WID="$NID/api"
cp ~/.zen/game/players/$PLAYER/QR.png ~/.zen/game/players/$PLAYER/ipfs/QR.png cp ~/.zen/game/players/$PLAYER/QR.png ~/.zen/game/players/$PLAYER/ipfs/QR.png
echo "$G1PUB" > ~/.zen/game/players/$PLAYER/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible) echo "$G1PUB" > ~/.zen/game/players/$PLAYER/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
## SEC PASS PROTECTED QRCODE
secFromDunikey=$(cat ~/.zen/game/players/$PLAYER/secret.dunikey | grep "sec" | cut -d ' ' -f2) secFromDunikey=$(cat ~/.zen/game/players/$PLAYER/secret.dunikey | grep "sec" | cut -d ' ' -f2)
echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec echo "$secFromDunikey" > /tmp/${PSEUDO}.sec
openssl enc -aes-256-cbc -salt -in ~/.zen/tmp/${MOATS}/${PSEUDO}.sec -out "$HOME/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec" -k $PASS 2>/dev/null openssl enc -aes-256-cbc -salt -in /tmp/${PSEUDO}.sec -out "/tmp/enc.${PSEUDO}.sec" -k $PASS 2>/dev/null
PASsec=$(cat ~/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec | base58) && rm -f ~/.zen/tmp/${MOATS}/${PSEUDO}.sec PASsec=$(cat /tmp/enc.${PSEUDO}.sec | base58) && rm -f /tmp/${PSEUDO}.sec
qrencode -s 12 -o $HOME/.zen/game/players/$PLAYER/QRsec.png $PASsec qrencode -s 12 -o $HOME/.zen/game/players/$PLAYER/QRsec.png $PASsec
echo "Votre 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 ### INITALISATION WIKI dans leurs répertoires de publication IPFS
############ TODO améliorer templates, sed, ajouter index.html, etc... ############ TODO améliorer templates, sed, ajouter index.html, etc...
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
echo echo
echo "***** Activation du Canal TW Astronaute $PLAYER *****" echo "***** Activation du Canal TW Astronaute $PLAYER *****"
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa/ mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa/
@ -211,18 +188,14 @@ NID="${myIPFSGW}" && WID="$NID/api"
sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
# INSERT ASTROPORT ADRESS # INSERT ASTROPORT ADRESS
tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' 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/${MOATS}/Astroport.json | jq -r .[].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 sed -i "s~$ASTROPORT~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
# TW CHAIN INIT WITH TWMODEL # TW CHAIN INIT WITH TWMODEL
sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html 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~_CHAIN_~${TWMODEL}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
sed -i "s~_SALT_~${SALT}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
sed -i "s~_PEPPER_~${PEPPER}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
sed -i "s~_PASS_~${PASS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
sed -i "s~_URL_~${URL}~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 # INSERT PLAYER DATA
@ -240,59 +213,49 @@ NID="${myIPFSGW}" && WID="$NID/api"
sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html 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~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
sed -i "s~tube.copylaradio.com~ipfs.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~ipfs.copylaradio.com~ipfs.copylaradio.com~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
# #
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) 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 _SECRET_ " echo "# CRYPTO ENCODING secret.dunikey -> TW _SECRET_ "
$MY_PATH/natools.py encrypt -p $G1PUB -i $HOME/.zen/game/players/$PLAYER/secret.dunikey -o $HOME/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc echo $myIP > ~/.zen/tmp/myIP
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc | base16) $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 sed -i "s~_SECRET_~$ENCODING~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
########### #
echo "# CRYPTO DECODING TESTING..." echo "# CRYPTO DECODING TEST"
tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' 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/${MOATS}/MadeInZion.json | jq -r .[].secret | base16 -d > ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 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/${MOATS}/crypto.$G1PUB.enc.2 -o $HOME/.zen/tmp/${MOATS}/crypto.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 ## CRYPTO PROCESS VALIDATED
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] && echo "NATOOLS LOADED" \ [[ -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 || sed -i "s~$ENCODING~$myIP~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html # Revert to plaintext _SECRET_ myIP
rm -f ~/.zen/tmp/${MOATS}/crypto.2
###########
# Create"$PLAYER_feed" Key rm -f ~/.zen/tmp/myIP.2
FEEDNS=$(ipfs key gen "${PLAYER}_feed")
## MAKE LightBeam Plugin Tiddler $PLAYER_feed
# $:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
## ADD SYSTEM TW ## ADD SYSTEM TW
tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html \ tiddlywiki --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html \
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \ --import ~/.zen/Astroport.ONE/templates/data/local.api.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \ --import ~/.zen/Astroport.ONE/templates/data/local.gw.json "application/json" \
--import ~/.zen/tmp/${MOATS}/local.api.json "application/json" \ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
--import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \ [[ -f ~/.zen/tmp/newindex.html ]] && cp ~/.zen/tmp/newindex.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
[[ -s ~/.zen/tmp/${MOATS}/newindex.html ]] && cp -f ~/.zen/tmp/${MOATS}/newindex.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
## ID CARD & QRCODE ## ID CARD
convert ~/.zen/game/players/$PLAYER/QR.png -resize 300 ~/.zen/tmp/${MOATS}/QR.png convert ~/.zen/game/players/$PLAYER/QR.png -resize 300 /tmp/QR.png
convert ${MY_PATH}/../images/astroport.jpg -resize 300 ~/.zen/tmp/${MOATS}/ASTROPORT.png convert ${MY_PATH}/../images/astroport.jpg -resize 300 /tmp/ASTROPORT.png
composite -compose Over -gravity SouthWest -geometry +280+20 ~/.zen/tmp/${MOATS}/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/${MOATS}/astroport.png composite -compose Over -gravity SouthWest -geometry +280+20 /tmp/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png /tmp/astroport.png
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/${MOATS}/QR.png ~/.zen/tmp/${MOATS}/astroport.png ~/.zen/tmp/${MOATS}/one.png composite -compose Over -gravity NorthWest -geometry +0+0 /tmp/QR.png /tmp/astroport.png /tmp/one.png
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/.current/QRsec.png ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/image.png # 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\"" ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/image.png convert -gravity northwest -pointsize 35 -fill black -draw "text 50,300 \"$PSEUDO\"" /tmp/one.png /tmp/image.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,40 \"$PLAYER\"" ~/.zen/tmp/${MOATS}/image.png ~/.zen/tmp/${MOATS}/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\"" ~/.zen/tmp/${MOATS}/pseudo.png ~/.zen/tmp/${MOATS}/pass.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\"" ~/.zen/tmp/${MOATS}/pass.png ~/.zen/tmp/${MOATS}/salt.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\"" ~/.zen/tmp/${MOATS}/salt.png ~/.zen/game/players/$PLAYER/ID.png convert -gravity northwest -pointsize 25 -fill black -draw "text 300,140 \"$PEPPER\"" /tmp/salt.png ~/.zen/game/players/$PLAYER/ID.png
# INSERTED IMAGE IPFS # INSERTED IMAGE IPFS
IASTRO=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ID.png | tail -n 1) IASTRO=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ID.png | tail -n 1)
@ -318,7 +281,7 @@ NID="${myIPFSGW}" && WID="$NID/api"
# astrXbian compatible IPFS sub structure =>$XZUID # astrXbian compatible IPFS sub structure =>$XZUID
cp ~/.zen/game/players/$PLAYER/.player ~/.zen/game/players/$PLAYER/ipfs/_xbian.zuid cp ~/.zen/game/players/$PLAYER/.player ~/.zen/game/players/$PLAYER/ipfs/_xbian.zuid
cp ~/.zen/game/players/$PLAYER/.player ~/.zen/game/players/$PLAYER/ipfs/ cp ~/.zen/game/players/$PLAYER/.player ~/.zen/game/players/$PLAYER/ipfs/
# PUBLIC Ŋ0 ZONE # PUBLIC Ŋ7 ZONE
echo "${ASTRONAUTENS}" > ~/.zen/game/players/$PLAYER/.playerns echo "${ASTRONAUTENS}" > ~/.zen/game/players/$PLAYER/.playerns
@ -327,16 +290,11 @@ NID="${myIPFSGW}" && WID="$NID/api"
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" "https://ipfs.copylaradio.com/ipns/${ASTRONAUTENS}"
echo; echo "Création Clefs et QR codes pour accès au niveau Astroport Ŋ1"; sleep 1 echo; echo "Création de votre Clef et QR codes d'accès au niveau Astroport Ŋ1"; sleep 1
echo "--- PLAYER : $PLAYER"; echo; echo "*** HOME : ~/.zen/game/players/$PLAYER/"; sleep 1
echo; echo "VISA : ${myIPFSGW}/ipfs/${IASTRO}" echo "*** PLAYER : $PLAYER";
echo; echo "+ TW : ${myIPFSGW}/ipns/${ASTRONAUTENS}" echo; echo "GW : https://ipfs.copylaradio.com/ipns/${ASTRONAUTENS}"; sleep 1
echo; echo "+ RSS : ${myIPFSGW}/ipns/${FEEDNS}"; sleep 1
[[ $XDG_SESSION_TYPE == 'x11' ]] && xdg-open "${myIPFSGW}/ipns/${ASTRONAUTENS}"
[[ ! -L ~/.zen/game/players/.current ]] && ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
# PASS CRYPTING KEY # PASS CRYPTING KEY
#~ echo; echo "Sécurisation de vos clefs... "; sleep 1 #~ echo; echo "Sécurisation de vos clefs... "; sleep 1
@ -356,29 +314,27 @@ echo "$PASS" > ~/.zen/game/players/$PLAYER/.pass
##################################################### #####################################################
## DISCONNECT AND CONNECT CURRENT PLAYER ## DISCONNECT AND CONNECT CURRENT PLAYER
#~ rm -f ~/.zen/game/players/.current rm -f ~/.zen/game/players/.current
#~ ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
## MANAGE GCHANGE+ & Ŋ1 EXPLORATION ## MANAGE GCHANGE+ & Ŋ1 EXPLORATION
${MY_PATH}/Connect_PLAYER_To_Gchange.sh "$PLAYER" ${MY_PATH}/Connect_PLAYER_To_Gchange.sh "$PLAYER"
### IF PRINTER -> PRINT VISA ### IF PRINTER -> PRINT VISA
LP=$(ls /dev/usb/lp* 2>/dev/null) LP=$(ls /dev/usb/lp*)
[[ $LP ]] && ${MY_PATH}/VISA.print.sh "$PLAYER" & [[ $LP ]] && ${MY_PATH}/VISA.print.sh &
## INIT FRIENDSHIP CAPTAIN/ASTRONAUTS (LATER THROUGH GCHANGE) ## INIT FRIENDSHIP CAPTAIN/ASTRONAUTS (LATER THROUGH GCHANGE)
## ${MY_PATH}/FRIENDS.init.sh ## ${MY_PATH}/FRIENDS.init.sh
## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage ## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage
echo "$(${MY_PATH}/face.sh cool)" echo "$(${MY_PATH}/face.sh cool)"
echo "Bienvenue 'Astronaute' $PSEUDO ($PLAYER)" echo "Bienvenue 'Astronaute' $PSEUDO ($PLAYER)"
echo echo "Votre PASS"; sleep 1
echo "Notez vos PHRASES et votre PASS"; sleep 1
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to start.sh echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to start.sh
echo "$PASS" echo "$PASS"
## CLEANING CACHE
rm -Rf ~/.zen/tmp/${MOATS}
exit 0 exit 0

View File

@ -11,32 +11,30 @@ MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}" ME="${0##*/}"
PLAYER="$1"
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
[[ ! -f ~/.zen/game/players/${PLAYER}/QR.png ]] &&\ [[ ! -f ~/.zen/game/players/.current/QR.png ]] &&\
echo "ERREUR. Aucun PLAYER Astronaute connecté .ERREUR ~/.zen/game/players/${PLAYER}/" && exit 1 echo "ERREUR. Aucun PLAYER Astronaute connecté .ERREUR ~/.zen/game/players/.current/" && exit 1
# Check who is .current PLAYER # Check who is .current PLAYER
PLAYER=$(cat ~/.zen/game/players/${PLAYER}/.player 2>/dev/null) || ( echo "noplayer" && exit 1 ) PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) || ( echo "noplayer" && exit 1 )
PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) || ( echo "nopseudo" && exit 1 ) PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null) || ( echo "nopseudo" && exit 1 )
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null) || ( echo "nog1pub" && exit 1 ) G1PUB=$(cat ~/.zen/game/players/.current/.g1pub 2>/dev/null) || ( echo "nog1pub" && exit 1 )
PASS=$(cat ~/.zen/game/players/${PLAYER}/.pass) PASS=$(cat ~/.zen/game/players/.current/.pass)
SALT=$(cat ~/.zen/game/players/${PLAYER}/secret.june | head -n 1) SALT=$(cat ~/.zen/game/players/.current/secret.june | head -n 1)
PEPPER=$(cat ~/.zen/game/players/${PLAYER}/secret.june | tail -n 1) PEPPER=$(cat ~/.zen/game/players/.current/secret.june | tail -n 1)
LP=$(ls /dev/usb/lp*) LP=$(ls /dev/usb/lp*)
convert ~/.zen/game/players/${PLAYER}/QR.png -resize 300 /tmp/QR.png convert ~/.zen/game/players/.current/QR.png -resize 300 /tmp/QR.png
convert ${MY_PATH}/../images/astroport.jpg -resize 300 /tmp/ASTROPORT.png convert ${MY_PATH}/../images/astroport.jpg -resize 300 /tmp/ASTROPORT.png
composite -compose Over -gravity SouthWest -geometry +280+20 /tmp/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png /tmp/astroport.png composite -compose Over -gravity SouthWest -geometry +280+20 /tmp/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png /tmp/astroport.png
composite -compose Over -gravity NorthWest -geometry +0+0 /tmp/QR.png /tmp/astroport.png /tmp/one.png composite -compose Over -gravity NorthWest -geometry +0+0 /tmp/QR.png /tmp/astroport.png /tmp/one.png
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/${PLAYER}/QRsec.png /tmp/one.png /tmp/image.png # 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 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 30 -fill black -draw "text 300,40 \"$PLAYER\"" /tmp/image.png /tmp/pseudo.png

View File

@ -28,12 +28,12 @@ exit 2
# IPFSNODEID=$(ipfs id -f='<id>\n') # IPFSNODEID=$(ipfs id -f='<id>\n')
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
mkdir -p ~/.zen/tmp/${IPFSNODEID}/uqdl/ mkdir -p ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/
## CHOOSE kodi.${OLD}log ## CHOOSE kodi.${OLD}log
[[ $1 == "old" ]] && OLD='old.' || OLD='' [[ $1 == "old" ]] && OLD='old.' || OLD=''
[[ ! $(which kodi) ]] && echo "KODI IS MISSING." && exit 1 [[ ! $(which kodi) ]] && echo "KODI IS MISSING. VISIT https://copylaradio.com" && exit 1
## LOOP ## LOOP
cycle=1 cycle=1
@ -44,22 +44,21 @@ do
echo "########################################################################" echo "########################################################################"
echo "MANUAL : uqload_downloader https://uqload.com/$uqlink \"$HOME/Astroport/$uqname.mp4\"" echo "MANUAL : uqload_downloader https://uqload.com/$uqlink \"$HOME/Astroport/$uqname.mp4\""
! cat ~/.zen/tmp/${IPFSNODEID}/uqdl/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}/uqdl/commands.fifo || \ echo "uqload_downloader https://uqload.com/$uqlink \"$HOME/Astroport/$uqname.mp4\"" >> ~/.zen/tmp/${IPFSNODEID}/uqload_downloader/commands.fifo || \
echo "$uqname.mp4 conflict" echo "$uqname.mp4 conflict"
## CHECK & MANAGE COPY ## CHECK & MANAGE COPY
if [[ $(find $HOME/Astroport -name "$uqname.mp4" -type f -print) ]]; if [[ $(find $HOME/Astroport -name "$uqname*" -type f -print) ]];
then then
echo "COPY ALREADY IN $HOME/Astroport/" echo "COPY ALREADY IN $HOME/Astroport/"
continue continue
else else
echo "DETECTED MOVIE : $uqname (https://uqload.com/$uqlink)" echo "DETECTED MOVIE : $uqname (https://uqload.com/$uqlink)"
uqload_downloader https://uqload.com/$uqlink "$HOME/Astroport/$uqname.mp4" uqload_downloader https://uqload.com/$uqlink "$HOME/Astroport/$uqname.mp4"
echo "COPY ~/Astroport/$uqname.mp4 DONE" echo "COPY ~/astroport/$uqname.mp4 DONE"
## ARE WE RUNNING ON ASTROPORT STATION? ## ARE WE RUNNING ON ASTROPORT STATION?
[[ ${IPFSNODEID} && -d ~/.zen/Astroport.ONE/ ]] && ~/.zen/Astroport.ONE/ajouter_media.sh [[ ${IPFSNODEID} && -d ~/.zen/Astroport.ONE/ ]] && ~/.zen/Astroport.ONE/ajouter_media.sh
fi fi
done done
echo echo

View File

@ -1,7 +1,5 @@
#!/bin/bash #!/bin/bash
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
myIP=$(hostname -I | awk '{print $1}') myIP=$(hostname -I | awk '{print $1}')
isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")

View File

@ -28,7 +28,7 @@ MESSAGE="( ◕‿◕)\n\n Bonjour $PLAYER\n\n UN MESSAGE POUR VOUS.\n\nAstroport
echo " echo "
######################################################################## ########################################################################
# $SUBJECT + $messfile -> $mail # EMAIL $SUBJECT $messfile TO $mail
########################################################################" ########################################################################"

View File

@ -281,12 +281,12 @@ then
if [[ $(echo "$MIME" | grep 'video') ]]; then if [[ $(echo "$MIME" | grep 'video') ]]; then
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'><source src='/ipfs/"${IPFSID}"' type='"${MIME}"'></video> TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'><source src='/ipfs/"${IPFSID}"' type='"${MIME}"'></video>
<br>{{!!duree}} - {{!!filesize}} - {{!!dur}} sec.<br> <br>{{!!duree}}<br>
"$H1" "$H1"
<h2>"$DESCRIPTION"</h2>" <h2>"$DESCRIPTION"</h2>"
TidType="text/vnd.tiddlywiki" ## MAYBE REAL ONCE TW CAN SHOW ATTACHED IPFS VIDEO (TODO: TESTINGS) TidType="text/vnd.tiddlywiki" ## MAYBE REAL ONCE TW CAN SHOW ATTACHED IPFS VIDEO (TODO: TESTINGS)
TAGS="G1${CAT} ${PLAYER} ${FILETAG} $SAISON $GENRE ipfs ${HASHTAG} $YEAR $MIME" TAGS="G1${CAT} ${PLAYER} ${FILETAG} $SAISON $GENRE ipfs ${HASHTAG} $YEAR"
# TyPE="$MIME" # TyPE="$MIME"
# CANON="/ipfs/"${IPFSID} # CANON="/ipfs/"${IPFSID}
CANON='' CANON=''
@ -315,9 +315,8 @@ then
"gifanime": "'/ipfs/${ANIMH}'", "gifanime": "'/ipfs/${ANIMH}'",
"type": "'${TidType}'", "type": "'${TidType}'",
"mime": "'${MIME}'", "mime": "'${MIME}'",
"dur": "'${ipfsdur}'", "ipfsdur": "'${ipfsdur}'",
"cat": "'${CAT}'", "cat": "'${CAT}'",
"filesize": "'${FILE_SIZE}'",
"size": "'${FILE_BSIZE}'", "size": "'${FILE_BSIZE}'",
"description": "'${DESCRIPTION}'", "description": "'${DESCRIPTION}'",
"screenshot": "'/ipfs/${POSTER}'", "screenshot": "'/ipfs/${POSTER}'",

View File

@ -1,150 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>TW IFRAME</title>
<style>
body {
margin: 0;
}
.row {
display: flex;
flex-wrap: wrap;
}
.embed-responsive {
position: relative;
display: block;
width: 100%;
padding: 0;
overflow: hidden;
}
.embed-responsive::before {
display: block;
content: "";
}
.embed-responsive-16by9::before {
padding-top: 56.25%;
}
.embed-responsive .embed-responsive-item {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
.col-md-4 {
width: 100%;
padding: 15px;
box-sizing: border-box;
}
@media(min-width: 768px) {
.col-md-4 {
max-width: 50%;
flex: 0 0 50%;
}
}
*, *:before, *:after {
box-sizing: border-box;
}
body {
margin: 40px;
font-family: 'Open Sans', 'sans-serif';
background-color: #fff;
color: #444;
}
h1, p {
margin: 0 0 1em 0;
}
.wrapper {
max-width: 940px;
margin: 0 20px;
display: grid;
grid-gap: 10px;
}
@media screen and (min-width: 500px) {
/* no grid support? */
.sidebar {
float: left;
width: 19.1489%;
}
.content {
float: right;
width: 79.7872%;
}
.wrapper {
margin: 0 auto;
grid-template-columns: 1fr 3fr;
}
.header, .footer {
grid-column: 1 / -1;
/* needed for the floated layout */
clear: both;
}
}
.wrapper > * {
background-color: #444;
color: #fff;
border-radius: 5px;
padding: 20px;
font-size: 150%;
/* needed for the floated layout*/
margin-bottom: 10px;
}
/* We need to set the widths used on floated items back to auto, and remove the bottom margin as when we have grid we have gaps. */
@supports (display: grid) {
.wrapper > * {
width: auto;
margin: 0;
}
}
</style>
</head>
<body>
<header class="header">
<h1>Astroport.ONE</h1>
<a target="you" href="_ME_">ME</a> : _IFRIENDHEAD_
</header>
<div class="row">
<div class="col-md-4">
<div class="embed-responsive embed-responsive-16by9">
<iframe name="me" class="embed-responsive-item" src="_ME_" allowfullscreen></iframe>
</div>
</div>
<div class="col-md-4">
<div class="embed-responsive embed-responsive-16by9">
<iframe name="you" class="embed-responsive-item" src="https://qo-op.com" allowfullscreen></iframe>
</div>
</div>
</div>
</body>
</html>