diff --git a/ASTROBOT/PLAYER.refresh.sh b/ASTROBOT/PLAYER.refresh.sh index 659066eb..9fd8a091 100755 --- a/ASTROBOT/PLAYER.refresh.sh +++ b/ASTROBOT/PLAYER.refresh.sh @@ -193,12 +193,18 @@ done ################################################################# ## IPFSNODEID ASTRONAUTES SIGNALING ## 12345 port ############################ +# Scan local cache ls ~/.zen/tmp/${IPFSNODEID}/ +BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) -ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) +## Merge actual online version +ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/ +NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) -echo "PUBLISHING STATION INDEXES" -ipfs name publish --allow-offline -t 72h /ipfs/$ROUTING +[[ $BSIZE != $NSIZE ]] \ +&& ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \ +&& echo "BALISE STATION /ipns/${IPFSNODEID} INDEXES = $NSIZE octets" \ +&& ipfs name publish --allow-offline -t 72h /ipfs/$ROUTING echo "PLAYER.refresh DONE." diff --git a/_12345.sh b/_12345.sh index eda3de54..f60f5867 100755 --- a/_12345.sh +++ b/_12345.sh @@ -9,70 +9,104 @@ # Then publish map of json DApp data # MOATS=$(date -u +"%Y%m%d%H%M%S%4N") -IPFSNODEID=$(ipfs id -f='\n') +IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) myIP=$(hostname -I | awk '{print $1}' | head -n 1) isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") -[[ ! $myIP || $isLAN ]] && myIP="127.0.1.1" +[[ ! $myIP || $isLAN ]] && myIP="astroport.localhost" PORT=12345 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); ## $USER running ipfs LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL -ncrunning=$(ps auxf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) -[[ $ncrunning ]] && echo "(≖‿‿≖) - API Server Already Running - (≖‿‿≖) " && exit 1 +ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2) +[[ $ncrunning ]] && echo "(≖‿‿≖) - API Server Already Running - (≖‿‿≖) " && kill -9 $ncrunning ## RESET MEMORY rm -Rf ~/.zen/tmp/swarm/* ## NAME PUBLISH EMPTY !!! -ipfs name publish --allow-offline /ipfs/Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ +# ipfs name publish --allow-offline /ipfs/Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ +## INDICATE IPFSNODEID IS RUNNING +############################################## + +mkdir -p ~/.zen/tmp/swarm +mkdir -p ~/.zen/tmp/$IPFSNODEID + +echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats + +## CREATE CHAN = MySwarm_$IPFSNODEID + CHAN=$(ipfs key list -l | grep -w "MySwarm_$IPFSNODEID" | cut -d ' ' -f 1) + [[ ! $CHAN ]] && CHAN=$(ipfs key gen "MySwarm_$IPFSNODEID") +## PUBLISH CHANNEL IPNS + echo "/ipns/$CHAN" > ~/.zen/tmp/$IPFSNODEID/.MySwarm -mkdir -p ~/.zen/tmp/swarm/${IPFSNODEID} -echo "${MOATS}" > ~/.zen/tmp/swarm/${IPFSNODEID}/.moats # REFRESH FROM BOOTSTRAP (COULD, SHOULD BE MY FRIENDS !) while true; do start=`date +%s` MOATS=$(date -u +"%Y%m%d%H%M%S%4N") - lastrun=$(cat ~/.zen/tmp/swarm/${IPFSNODEID}/.moats) + lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats) duree=$(expr ${MOATS} - $lastrun) + ## FIXING TIC TAC FOR NODE & SWARM REFRESH if [[ duree -gt 3600000 ]]; then ( start=`date +%s` + + ############# GET BOOTSTRAP SWARM DATA for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#") # remove comments do echo "############# RUN LOOP #########" ipfsnodeid=${bootnode##*/} mkdir -p ~/.zen/tmp/swarm/$ipfsnodeid - echo "IPFS get /ipns/$ipfsnodeid" - [[ $YOU ]] && echo "http://$myIP:8080/ipns/${ipfsnodeid} ($YOU)" && ipfs --timeout 12s get -o ~/.zen/tmp/swarm /ipns/$ipfsnodeid - ## [[ ! -s ~/.zen/tmp/swarm/$ipfsnodeid/index.json ]] && echo "$LIBRA/ipns/${ipfsnodeid}" && curl -m 6 -so ~/.zen/tmp/swarm/$ipfsnodeid/index.json "$LIBRA/ipns/${ipfsnodeid}" - ## TODO LOOP CREATE bootstrap json array - # + echo "IPFS get /ipns/$ipfsnodeid" + [[ $YOU ]] && ipfs --timeout 12s get -o ~/.zen/tmp/swarm/$ipfsnodeid /ipns/$ipfsnodeid/ echo "Updated : ~/.zen/tmp/swarm/$ipfsnodeid" + ls ~/.zen/tmp/swarm/$ipfsnodeid + done - ls ~/.zen/tmp/swarm/ - ROUTING=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) - echo "SELF PUBLISHING SWARM STATUS" - ipfs name publish --allow-offline /ipfs/$ROUTING + ############### UPDATE MySwarm CHAN + ls ~/.zen/tmp/swarm + BSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1) + + ## SIZE MODIFIED + [[ $BSIZE != $(cat ~/.zen/tmp/swarm/.bsize) ]] \ + && echo $BSIZE > ~/.zen/tmp/swarm/.bsize \ + && SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \ + && ipfs name publish --key "MySwarm_$IPFSNODEID" --allow-offline /ipfs/$SWARMH + + + ############# PUBLISH IPFSNODEID BALISE + # Scan local cache + ls ~/.zen/tmp/${IPFSNODEID}/ + BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) + + ## Merge with actual online version + ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/ + NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) + + ## Local / IPNS size differ => Publish + [[ $BSIZE != $NSIZE ]] \ + && ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \ + && echo "BALISE STATION /ipns/${IPFSNODEID} INDEXES = $NSIZE octets" \ + && ipfs name publish --allow-offline /ipfs/$ROUTING end=`date +%s` - echo '(*__*) UPDATE & PUBLISH duration was '`expr $end - $start`' seconds.' - - # last run recording - echo "${MOATS}" > ~/.zen/tmp/swarm/${IPFSNODEID}/.moats + echo '(*__*) MySwam Update ($BSIZE B) duration was '`expr $end - $start`' seconds.' ) & + # last run recording + echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats + else echo "$duree only cache life" @@ -90,7 +124,8 @@ Content-Type: application/json; charset=UTF-8 \"hostname\" : \"$(hostname)\", \"myIP\" : \"${myIP}\", \"ipfsnodeid\" : \"${IPFSNODEID}\", - \"url\" : \"http://${myIP}:8080/ipns/${IPFSNODEID}\" + \"url\" : \"http://${myIP}:8080/ipns/${IPFSNODEID}\", + \"myswarm\" : \"http://${myIP}:8080/ipns/${CHAN}\" } " ###################################################################################### diff --git a/tools/new_file_in_astroport.sh b/tools/new_file_in_astroport.sh index 7418eb35..f1d7a2f9 100755 --- a/tools/new_file_in_astroport.sh +++ b/tools/new_file_in_astroport.sh @@ -61,6 +61,7 @@ TITLE="${file%.*}" MIME=$(file --mime-type -b "${path}${file}") + ############# EXTEND MEDIAKEY IDENTIFATORS https://github.com/NapoleonWils0n/ffmpeg-scripts if [[ $(echo "$MIME" | grep 'video') ]]; then ## Create gifanime ## TODO Search for similarities BEFORE ADD echo "(✜‿‿✜) GIFANIME (✜‿‿✜)" @@ -80,12 +81,12 @@ mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID} ### SOURCE IS ~/astroport/ !! [[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'astroport') ]] && er="Les fichiers sont à placer dans ~/astroport/ MERCI" && echo "$er" && exit 1 -### TyPE & type & T +### TyPE & type & T = related to ~/astroport location of the infile (mimetype subdivision) TyPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... TyPE(film, youtube, mp3, video, page)/ REFERENCE / type=$(echo "$TyPE" | awk '{ print tolower($0) }') PREFIX=$(echo "$TyPE" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, Y, M ou Y (all the alaphabet can address a data type -# File is placed in ROOT ~/astroport ? +# File cannot be without "TyPE" in ~/astroport if [[ $PREFIX == "" ]] then [[ ! $3 ]] && [[ "$USER" != "xbian" ]] && zenity --warning --width 300 --text "Désolé votre fichier ne peut pas être traité" @@ -93,7 +94,7 @@ then fi ######################################################################## -# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (can be extended with new ) +# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (TODO : EXTEND) ######################################################################## case ${type} in video) @@ -126,7 +127,7 @@ case ${type} in REFERENCE=$(echo "$path" | cut -d '/' -f 6 ) # Path contains TMDB id if ! [[ "$REFERENCE" =~ ^[0-9]+$ ]] # ${REFERENCE} NOT A NUMBER then - er="$er | ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ or use your 06 phone number" + er="$er | ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ or use your a mobile phone number ;)" echo "$er" exit 1 fi @@ -139,16 +140,18 @@ case ${type} in ;; esac +### SET MEDIAKEY MEDIAKEY="${INDEXPREFIX}${REFERENCE}" echo ">>>>>>>>>> $MEDIAKEY ($MIME) <<<<<<<<<<<<<<<" +## RUBISH ?? ######################################################################## mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ echo "ADDING ${path}${file} to IPFS " echo "~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN" echo "-----------------------------------------------------------------" - echo "FOUND : ${path}${file}" + ### FILE SIZING #### FILE_BSIZE=$(du -b "${path}${file}" | awk '{print $1}') FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }') @@ -171,22 +174,14 @@ echo IPFS ADD time was $ipfsdur seconds. ########################################################### ############################################ ################################ - +APPNAME="KEY" echo "-----------------------------------------------------------------" echo "IPFS $file DIRECTORY: ipfs ls /ipfs/$IPFSREPFILEID" -echo "-----------------------------------------------------------------" -echo "New $TyPE INDEX ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN " +echo "APP $APPNAME OUTPUT -----------------------------------------------------------------" +echo "$HOME/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/${APPNAME}/${MIME}/${MEDIAKEY}/${G1PUB}/ " URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri) - -#~ ######################################################################## -## TODO : URL SWALLOW (MEDIAKEY=REVERSEURL moc/...) -# ipfs add MEDIA + inode_json -## ARCHIVE = Look & Listen = ScreenShot + Gif + Mazsah -#~ ######################################################################## -#~ ######################################################################## - #~ ### MEDIAKEY FORGE #~ ######################################################################## #~ ## CREATE NEW ipns KEY : ${MEDIAKEY} @@ -436,7 +431,7 @@ then FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${path}${file}" | cut -d "x" -f 2) RES=${FILE_RES%?}0p - # ADD NEW LINE TO INDEX + # REFRESH ajouter_video.txt FILE if [[ -f ~/astroport/${TyPE}/${REFERENCE}/ajouter_video.txt ]] then line=$(cat ~/astroport/${TyPE}/${REFERENCE}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g" | sed "s/_IPNSKEY_/$IPNS/g" ) @@ -445,7 +440,6 @@ then fi echo "-------------------- UPDATE ${PREFIX}ASTRXBIAN INDEX -----------------------------" echo "$line" -# echo "$line" >> ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN echo "UPDATE ~/astroport/${TyPE}/${REFERENCE}/ajouter_video.txt" echo "$line" > ~/astroport/${TyPE}/${REFERENCE}/ajouter_video.txt @@ -457,7 +451,7 @@ then echo "----------------- PREPARING TIDDLER ----------------------" - CAT=$(echo "$CAT" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords + CAT=$(echo "$type" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords ## Adapt TMDB url [[ $CAT == "Film" ]] && tdb="movie" [[ $CAT == "Serie" ]] && tdb="tv"