diff --git a/zen/new_file_in_astroport.sh b/zen/new_file_in_astroport.sh index be3fcd5..dc32ba3 100755 --- a/zen/new_file_in_astroport.sh +++ b/zen/new_file_in_astroport.sh @@ -53,6 +53,8 @@ then er="$er | WARNING. $TYPE is root file UNTREATED" && echo "$er" && exit 1 fi +[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ + ######################################################################## # EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (can be extended with new ) ######################################################################## @@ -76,7 +78,7 @@ case ${CAT} 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/ " + er="$er | ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ or use your 06 phone number" echo "$er" exit 1 fi @@ -87,35 +89,32 @@ case ${CAT} in esac ######################################################################## -## CHECK if ${INDEXPREFIX}${REFERENCE} MEDIAKEY exists +## CHECK if ${INDEXPREFIX}${REFERENCE} MEDIAKEY exists -> REFRESH DATA ######################################################################## echo "SEARCH for ;$REFERENCE; in ${PREFIX}ASTRXBIAN" -isREFERENCEinINDEX=$(grep ";$REFERENCE;" ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ) -if [[ ${isREFERENCEinINDEX} ]] -then - if [[ -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} ]] +if [[ ${REFERENCE:0:1} != "0" ]]; then ## REFERENCE COULD BE A PHONE NUMBER (not in TMDB copy force) + isREFERENCEinINDEX=$(grep ";$REFERENCE;" ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ) + if [[ ${isREFERENCEinINDEX} ]] then - # FILE IS MINE, NEW VERSION?! replacing it in INDEX - ipnslink=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link) - echo "FOUND IPNS ${INDEXPREFIX}${REFERENCE} = $ipnslink" + if [[ -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} ]] + then + # FILE IS MINE, NEW VERSION?! replacing it in INDEX + ipnslink=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link) + echo "FOUND IPNS ${INDEXPREFIX}${REFERENCE} = $ipnslink" - # DELETING GCHANGE AD, WILL BE CREATED AGAIN - gchangeAD=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad) - ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey deleteoffer -i $gchangeAD - rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad - else - er="$er | FILE IS ALREADY EXISTING FROM ANOTHER FRIEND" && echo "$er" - # SEND messages to warn about need to Unify MEDIAKEY IPNS KEY - ipfsnodeid=$(echo ${isREFERENCEinINDEX} | tail -n 1 | cut -d '.' -f 3- | cut -d '/' -f 1) - destg1=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $ipfsnodeid) - [[ "$IPFSNODEID" != "$ipfsnodeid" ]] && ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey send -d $destg1 -t "BLOCKCHAIN FUSION ${INDEXPREFIX}${REFERENCE}" -m "Conflit de MEDIAKEY. Choisir quelle clef IPNS conserver..." - # + # DELETING GCHANGE AD, WILL BE CREATED AGAIN + gchangeAD=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad) + ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey deleteoffer -i $gchangeAD + rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad + else + er="$er | FILE IS ALREADY EXISTING FROM ANOTHER FRIEND" && echo "$er" + ## SEND messages to warn about need to Unify MEDIAKEY IPNS KEY + ipfsnodeid=$(echo ${isREFERENCEinINDEX} | tail -n 1 | cut -d '.' -f 3- | cut -d '/' -f 1) + destg1=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $ipfsnodeid) + [[ "$IPFSNODEID" != "$ipfsnodeid" ]] && ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey send -d $destg1 -t "BLOCKCHAIN FUSION ${INDEXPREFIX}${REFERENCE}" -m "Conflit de MEDIAKEY. Choisir quelle clef IPNS conserver..." + ## + fi fi - - # DELETING OLD LINE FROM INDEX - sed -i "/;$REFERENCE;/d" ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN - - # [[ "$USER" != "xbian" ]] && zenity --warning --width 300 --text "DOUBLON ${isREFERENCEinINDEX}" fi ######################################################################## @@ -131,16 +130,23 @@ echo "-----------------------------------------------------------------" echo "IPFS: $file : ipfs ls /ipfs/$IPFSREPFILEID" echo "-----------------------------------------------------------------" echo "New $TYPE INDEX ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN " -[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri) ######################################################################## ## CREATE NEW ipns KEY : ${INDEXPREFIX}${REFERENCE} ######################################################################## +## IPFS SELF IPNS DATA STORAGE +## ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ ######################################################################## -[[ ! $(ipfs key list | grep "${INDEXPREFIX}${REFERENCE}") ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} && KEY=$(ipfs key gen "${INDEXPREFIX}${REFERENCE}") && KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1) -## INIT ipns +if [[ ! $(ipfs key list | grep "${INDEXPREFIX}${REFERENCE}") ]]; then + ## IPNS KEY CREATION + mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} + KEY=$(ipfs key gen "${INDEXPREFIX}${REFERENCE}") + KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1) +fi + +## IS IT NEW IPNS KEY? if [[ $KEY ]]; then # memorize IPNS key filename for easiest exchange echo "$KEYFILE" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.keystore_filename @@ -153,41 +159,62 @@ if [[ $KEY ]]; then # > STARGATE 1 - 2 - 3 - 4 - 5 !! ################ ENCRYPT keystore/$KEYFILE else +## OLD IPNS KEY KEY=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link) KEYFILE=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.keystore_filename) fi -# CLEAR ipfs link (is then cyphered to manage exchange regulation) +######################################################################## +## add default metadata (TODO = use json file?) +######################################################################## +echo "${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename +echo "${TITLE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.title +echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.timestamp +## INIT MEDIAKEY .views.counter +echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.views.counter +######################################################################## + +######################################################################## +# Prepare IPFS links (then cyphered to manage exchange regulation) +######################################################################## echo "/ipfs/$IPFSREPFILEID/${file}" > /tmp/.ipfs.filelink echo "$IPFSID" > /tmp/.ipfsid -################ ENCRYPT .ipfsid & .ipfs.filelink for A_boostrap_nodes and myself -for g1node in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments -do - # CREATE $g1node IPFS communication directory - [[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node} ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node} - # Enscrypt IPFS links - $MY_PATH/tools/natools.py encrypt -p $g1node -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.ipfs.filelink.encrypt - $MY_PATH/tools/natools.py encrypt -p $g1node -i /tmp/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.ipfsid.encrypt - # Init zen, views counters & visitor - echo "0" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.zen - echo "0" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.views.counter - echo "anonymous" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.visitor -done +######################################################################## + +######################################################################## +################ ask autoPIN to one shuffle A_boostrap_nodes +######################################################################## +PINnode=$(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#" | shuf) +echo "ASK AUTOPIN to $PINnode" +## CREATE $PINnode IPFS communication directory +[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode} ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode} +## ENCRYPT .ipfsid & .ipfs.filelink +$MY_PATH/tools/natools.py encrypt -p $PINnode -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.ipfs.filelink.encrypt +$MY_PATH/tools/natools.py encrypt -p $PINnode -i /tmp/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.ipfsid.encrypt +## Init zen, views counters & visitor +echo "0" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.zen +echo "0" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.views.counter +echo "anonymous" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.visitor +######################################################################## +# MEMORIZE my PIN +mkdir -p ~/.zen/PIN/${IPFSREPFILEID}/ +touch ~/.zen/PIN/${IPFSREPFILEID}/${G1PUB} + +######################################################################## ## encrypt links for myself +######################################################################## $MY_PATH/tools/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt $MY_PATH/tools/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid.encrypt rm /tmp/.ipfs.filelink rm /tmp/.ipfsid +######################################################################## -echo "${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename -echo "${TITLE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.title -echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.timestamp -# INIT GLOBAL .views.counter -echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.views.counter - -# COPY "ajouter_video.txt" and "video.json" to SELF IPNS publish data +######################################################################## +## ADD "ajouter_video.txt" and "video.json" +SELF IPNS publish data [[ -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ [[ -f ~/astroport/${TYPE}/${REFERENCE}/video.json ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/video.json ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ +######################################################################## ######################################################################## ## EXPLANATIONS @@ -195,6 +222,7 @@ echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.v # What is being in ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/ # is published on http://127.0.0.1:8181/ipns/$KEY/ ######################################################################## +######################################################################## # CONTRACTS, are small App (fulljs or jquery + nginx backend app server) # They must decrypt IPFS after succeeding a chalenge (, +/- n zen, ...) ######################################################################## @@ -208,24 +236,31 @@ echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.v # $G1PUB/index.html contains redirection to ipfs link ######################################################################## -# IPNS index.html Redirect to ipfs streaming link (could be contract or anything else !!) +######################################################################## +## IPNS access to index.html +## Level 1 (not crypted) -> Redirect to ipfs streaming link +## Modified by "./zen/ipns_TAG_refresh.sh" (add crypto/contracts there) echo "" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/index.html IPNSLINK=$(ipfs key list -l | grep ${INDEXPREFIX}${REFERENCE} | cut -d ' ' -f 1) echo " -