#!/bin/bash ######################################################################## # Author: # Version: 0.1 # 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 YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); IPFSNODEID=$(ipfs id -f='\n') G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) ## >>>>>>>>>>>>> Called from ./zen/gchange_INIT.sh <<<<<<<<<<<<<<<<<<<<<<< # This script is called to manage SWARM autoPIN # Actual behaviour is to accept anything from # SOURCE: ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.ipfsid.encrypt (new_file_in_astroport.sh) # MEDIAKEY: ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${PINnode}/.ipns.mediakey.encrypt ## AUTO PIN FRIENDS ACTIVATION ## TODO Source should rename ".ipfsid.encrypt" to stop asking for autoPIN for astrofile in $(ls -dt ~/.zen/ipfs_swarm/.12D*/KEY/*/*/${G1PUB}/.ipfsid.encrypt | shuf); do astrofilelinksec=$(echo "$astrofile" | sed "s/.ipfsid.encrypt/.ipfs.filelink.encrypt/g") # decrypt $astrofile # /home/fred/.zen/ipfs_swarm/.12D3KooWJAQuoRt4HV8BYrmTfpws7gBGBSgSArap9uwAaHVDzru7/KEY/TMDB_100271/9M3k4JJM6arh8yG33ECXLt6Rh7do9AWLCKa9CJLL6vBB/HbBJDXDrN8swxvMohMxmegYRyZ7m99jqgxwwN1gwxck2/.ipfsid.encrypt mediakey=$(echo "$astrofile" | cut -d '/' -f 8 ) keytype=$(echo "$mediakey" | cut -d '_' -f 1 ) mediaid=$(echo "$mediakey" | cut -d '_' -f 2- ) g1source=$(echo "$astrofile" | cut -d '/' -f 9 ) ipfsnodesource=$(~/.zen/astrXbian/zen/tools/g1_to_ipfs.py $g1source) # CHECK FRIENDSHIP LEVELS # only talk to 12D not Qm [[ "${ipfsnodesource:0:2}" == "Qm" ]] && echo "NO COMPATIBLE STATION $ipfsnodesource" && continue starsin=$(ipfs --timeout=10s cat /ipns/$ipfsnodesource/.$ipfsnodesource/FRIENDS/$G1PUB/stars.level) starsout=$(ipfs --timeout=10s cat /ipns/$IPFSNODEID/.$IPFSNODEID/FRIENDS/$g1source/stars.level) ## PIN COULD BE ONLY ALLOWED FROM SOME LEVEL FRIENDS ONLY echo "RX $starsin / TX $starsout (stars)" echo "$mediakey PINNING ASKED BY $g1source" ## DECRYPT FINAL IPFS LINKS... $MY_PATH/natools.py decrypt -f pubsec -k "$HOME/.zen/secret.dunikey" -i "$astrofile" -o "/tmp/ipfslink.txt" astrofile=$(cat /tmp/ipfslink.txt) && [[ -d ~/.zen/PIN/${astrofile} ]] && echo "removing old pin reference" && rm -Rf ~/.zen/PIN/${astrofile}/ ## REMOVE OLD PIN REFERENCE to keep directory (easier reading) $MY_PATH/natools.py decrypt -f pubsec -k "$HOME/.zen/secret.dunikey" -i "$astrofilelinksec" -o "/tmp/ipfsfilelink.txt" ipfsrepidfile=$(cat /tmp/ipfsfilelink.txt | rev | cut -d '/' -f 2 | rev) # PINNING NEW DIRECTORY & FILE echo "SHOULD I PIN ~/.zen/PIN/${ipfsrepidfile} ??" if [[ ! -d ~/.zen/PIN/${ipfsrepidfile} ]]; then echo "PIN ADD : $ipfsrepidfile" ipfs pin add /ipfs/$ipfsrepidfile && mkdir -p ~/.zen/PIN/${ipfsrepidfile}/ echo "RECORDING NEW PIN ~/.zen/PIN/${ipfsrepidfile}" [[ -d ~/.zen/PIN/${ipfsrepidfile} ]] && echo "$G1PUB" > ~/.zen/PIN/${ipfsrepidfile}/$ipfsnodesource ## COPY IPNS MEDIAKEY TO ipfs keystore (UPDATE IF STATION OFF) echo "ADD ${mediakey} to my local keystore (SO I CAN UPDATE IPNS LINK LATER with ipns_TAG_refresh.sh)" if [[ -f $HOME/.zen/ipfs_swarm/.${ipfsnodesource}/KEY/${mediakey}/${g1source}/${G1PUB}/.ipns.mediakey.encrypt ]]; then $MY_PATH/natools.py decrypt -f pubsec -k "$HOME/.zen/secret.dunikey" -i "$HOME/.zen/ipfs_swarm/.${ipfsnodesource}/KEY/${mediakey}/${g1source}/${G1PUB}/.ipns.mediakey.encrypt" -o "/tmp/ipns.mediakey" if [[ -f /tmp/ipns.mediakey ]]; then KEYFILE=$($MY_PATH/give_me_keystore_filename.py "${mediakey}") [[ ! -f ~/.ipfs/keystore/$KEYFILE ]] && mv /tmp/ipns.mediakey ~/.ipfs/keystore/$KEYFILE || ( echo "$KEYFILE already existing in local keystore. CONTINUE" ) echo "${mediakey}" > ~/.zen/PIN/${ipfsrepidfile}/MEDIAKEY echo "$(ipfs key list -l | grep ${mediakey} | cut -d ' ' -f 1)" > ~/.zen/PIN/${ipfsrepidfile}/IPNSLINK ## USED BY BOOTSTRAP IN ipns_TAG_refresh.sh TO REFRESH MEDIAKEY publishing fi fi else echo "ALREADY PINNED" continue fi ########## PIN MAKES YOU OFFICIAL FASTRXBIAN FILM DISTRIBUTOR ############################################ PINNING NODE MAKES ALL HIS FRIENDS MOVIES AVAILABLE TO ALL ## TODO : DECIDE TO ACTIVATE THIS BEHAVIOUR OR NOT ? ## Copy FASTRXBIAN index (makes movies available for ALL) [[ ! -f ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/FASTRXBIAN ]] && echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/FASTRXBIAN if [[ "$keytype" == "TMDB" ]]; then cat ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/FASTRXBIAN | grep ";$mediaid;" | tail -n 1 >> ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/FASTRXBIAN cat ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/FASTRXBIAN | uniq > ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/FASTRXBIAN fi # EXIT AFTER ONE PIN ONLY (next PIN in cron_MINUTE time) [[ -f ~/.zen/PIN/${ipfsrepidfile}/$G1PUB ]] && break done exit 0