2021-09-29 22:08:23 +02:00
#!/bin/bash
2020-12-24 15:00:48 +01:00
########################################################################
# Author: Fred (support@qo-op.com)
2021-02-17 03:33:41 +01:00
# Version: 0.3
2020-12-24 15:00:48 +01:00
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
2021-02-13 00:40:45 +01:00
# COPY ~/astroport/* files to IPFS
# Publish INDEX ~/.zen/ipfs/.*/${PREFIX}ASTRXBIAN
2020-12-24 15:00:48 +01:00
######## #### ### ## #
2021-02-17 03:33:41 +01:00
MY_PATH = " `dirname \" $0 \"` " # relative
MY_PATH = " `( cd \" $MY_PATH \" && pwd )` " # absolutized and normalized
ME = " ${ 0 ##*/ } "
2021-09-29 22:08:23 +02:00
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`
2021-02-17 03:33:41 +01:00
YOU = $( ps auxf --sort= +utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) ;
2021-12-03 23:59:57 +01:00
IPFSNODEID = $( cat ~/.ipfs/config | jq -r .Identity.PeerID)
2021-12-01 01:54:54 +01:00
[ [ ! $IPFSNODEID ] ] && echo 'ERROR missing IPFS Node id !! IPFS is not responding !?' && exit 1
2021-02-17 03:33:41 +01:00
G1PUB = $( cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
2021-02-13 00:40:45 +01:00
# ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
2022-04-18 16:09:28 +02:00
# Astropot/Kodi/Vstream source reads ${PREFIX}ASTRXBIAN from http://127.0.0.1:8080/.$IPFNODEID/
2021-02-13 00:40:45 +01:00
# Index File Format (could be enhanced) is using Kodi TMDB enhancement
2020-12-24 15:00:48 +01:00
# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films
########################################################################
2021-02-16 23:52:47 +01:00
## RUN inotifywait process ~/astroport/ NEW FILE DETECT
# /usr/bin/inotifywait -r -e close_write -m /home/$YOU/astroport | while read dir flags file; do ~/.zen/astrXbian/zen/new_file_in_astroport.sh "$dir" "$file"; done &
2021-02-13 15:43:43 +01:00
# mkdir -p ~/astroport/youtube
# mkdir -p ~/astroport/mp3
2020-12-24 15:00:48 +01:00
########################################################################
path = " $1 "
2021-09-21 00:47:05 +02:00
if [ [ " $path " = = "" ] ] ; then
echo "## BATCH RUN. READ FIFO FILE."
fi
2021-03-02 11:13:24 +01:00
# Add trailing / if needed
2021-09-02 01:41:21 +02:00
length = ${# path }
2021-03-02 11:13:24 +01:00
last_char = ${ path : length -1 : 1 }
[ [ $last_char != "/" ] ] && path = " $path / " ; :
2020-12-24 15:00:48 +01:00
file = " $2 "
2021-03-02 11:13:24 +01:00
2021-03-02 22:38:53 +01:00
echo " ~/.zen/astrXbian/zen/new_file_in_astroport.sh PATH/ \" $path \" FILE \" $file \" "
2021-03-02 11:13:24 +01:00
2020-12-24 15:00:48 +01:00
extension = " ${ file ##*. } "
TITLE = " ${ file %.* } "
2021-03-02 11:13:24 +01:00
# .part file false flag correcting (inotify mode)
2021-03-14 01:10:29 +01:00
[ [ ! -f " ${ path } ${ file } " ] ] && file = " ${ TITLE %.* } " && extension = " ${ TITLE ##*. } " && [ [ ! -f " ${ path } ${ file } " ] ] && er = "NO FILE" && echo " $er " && exit 1
2020-12-24 15:00:48 +01:00
# GET XZUID
2021-03-02 11:13:24 +01:00
[ [ -f ~/.zen/ipfs/.$IPFSNODEID /G1SSB/_g1.gchange_title ] ] && XZUID = $( cat ~/.zen/ipfs/.$IPFSNODEID /G1SSB/_g1.gchange_title) || XZUID = $( cat /etc/hostname)
2021-03-14 01:10:29 +01:00
[ [ ! $( echo " $path " | cut -d '/' -f 4 | grep 'astroport' ) ] ] && er = "Les fichiers sont à placer dans ~/astroport/ MERCI" && echo " $er " && exit 1
2021-07-08 07:23:04 +02:00
TYPE = $( echo " $path " | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... TYPE(film, youtube, mp3, video)/ REFERENCE /
2021-02-18 01:24:13 +01:00
CAT = $( echo " $TYPE " | awk '{ print tolower($0) }' )
2021-02-18 00:33:06 +01:00
2021-02-24 20:43:47 +01:00
PREFIX = $( echo " $TYPE " | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, Y, M ou Y
2021-02-13 00:40:45 +01:00
# File is placed in ROOT ~/astroport ?
2021-03-01 02:25:27 +01:00
if [ [ $PREFIX = = "" ] ]
then
2021-09-02 01:41:21 +02:00
[ [ " $USER " != "xbian" ] ] && zenity --warning --width 300 --text "Désolé votre fichier ne peut pas être traité"
er = " $er | WARNING. $TYPE is root file UNTREATED " && echo " $er " && exit 1
2021-03-01 02:25:27 +01:00
fi
2020-12-24 15:00:48 +01:00
2021-04-06 02:47:04 +02:00
[ [ ! -d ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/ ] ] && mkdir -p ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/
2021-03-02 11:13:24 +01:00
########################################################################
# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (can be extended with new )
########################################################################
2021-03-02 22:38:53 +01:00
case ${ CAT } in
2021-09-02 01:41:21 +02:00
video)
INDEXPREFIX = "VIDEO_"
REFERENCE = $( echo " $path " | cut -d '/' -f 6 )
TITLE = " ${ file %.* } "
; ;
youtube)
INDEXPREFIX = "YOUTUBE_"
REFERENCE = $( echo " $path " | cut -d '/' -f 6 )
TITLE = " ${ file %.* } "
; ;
mp3)
## DIFFERENT TREATMENT
INDEXPREFIX = "MP3_"
REFERENCE = $( echo " $path " | cut -d '/' -f 6 )
TITLE = $( echo " $file " | cut -d "&" -f 2-)
er = " $er | Please use new_mp3_in_astroport.sh ... EXIT "
echo " $er "
exit 1
; ;
film | serie)
INDEXPREFIX = "TMDB_"
REFERENCE = $( echo " $path " | cut -d '/' -f 6 ) # Path contains TMDB id
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 "
echo " $er "
exit 1
fi
; ;
## TODO ADD "httrack" for website copying
## httrack "https://wiki.lowtechlab.org" -O "./wiki.lowtechlab.org" "+*.lowtechlab.org/*" -v -%l "fr"
##
*)
er = " $CAT inconnu " && echo " $er " && exit 1
; ;
2021-03-02 11:13:24 +01:00
esac
2021-06-17 19:15:50 +02:00
MEDIAKEY = " ${ INDEXPREFIX } ${ REFERENCE } "
2021-03-02 11:13:24 +01:00
########################################################################
2021-06-17 19:15:50 +02:00
## CHECK if MEDIAKEY exists -> REFRESH DATA
2021-03-02 11:13:24 +01:00
########################################################################
2021-03-02 13:24:45 +01:00
echo " SEARCH for ; $REFERENCE ; in ${ PREFIX } ASTRXBIAN "
2021-04-06 02:47:04 +02:00
if [ [ ${ REFERENCE : 0 : 1 } != "0" ] ] ; then ## REFERENCE COULD BE A PHONE NUMBER (not in TMDB copy force)
2021-09-02 01:41:21 +02:00
isREFERENCEinINDEX = $( grep " ; $REFERENCE ; " ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${ PREFIX } ASTRXBIAN )
if [ [ ${ isREFERENCEinINDEX } ] ]
then
if [ [ -d ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } ] ]
then
# FILE IS MINE, NEW VERSION?! replacing it in INDEX
ipnslink = $( cat ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipns.link)
echo " FOUND IPNS ${ MEDIAKEY } = $ipnslink "
# DELETING GCHANGE AD, WILL BE CREATED AGAIN
gchangeAD = $( cat ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.gchange.ad)
~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" deleteoffer -i $gchangeAD
rm ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ 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 -n "https://data.gchange.fr" send -d $destg1 -t " MEDIAKEY COLLISION ${ MEDIAKEY } " -m "Conflit de MEDIAKEY. Choisir quelle clef IPNS conserver..."
##
fi
fi
2021-03-02 11:13:24 +01:00
fi
2021-07-03 16:19:56 +02:00
2021-03-02 11:13:24 +01:00
########################################################################
2021-02-24 20:43:47 +01:00
echo " ADDING ${ path } ${ file } to IPFS and create ${ PREFIX } ASTRXBIAN INDEX "
2021-02-13 00:40:45 +01:00
echo " ~/.zen/ipfs/. ${ IPFSNODEID } /astroport/kodi/vstream/ ${ PREFIX } ASTRXBIAN "
2020-12-24 15:00:48 +01:00
echo "-----------------------------------------------------------------"
2021-04-01 00:12:09 +02:00
IPFS = $( ipfs add -wq " ${ path } ${ file } " )
IPFSREPFILEID = $( echo $IPFS | cut -d ' ' -f 2)
IPFSID = $( echo $IPFS | cut -d ' ' -f 1)
2021-02-13 00:40:45 +01:00
[ [ $IPFSREPFILEID = = "" ] ] && echo "ipfs add ERROR" && exit 1
2020-12-24 17:43:00 +01:00
echo "-----------------------------------------------------------------"
2021-09-23 04:42:40 +02:00
echo " IPFS $file DIRECTORY: ipfs ls /ipfs/ $IPFSREPFILEID "
2020-12-24 15:00:48 +01:00
echo "-----------------------------------------------------------------"
2021-02-18 00:33:06 +01:00
echo " New $TYPE INDEX ~/.zen/ipfs/. ${ IPFSNODEID } /astroport/kodi/vstream/ ${ PREFIX } ASTRXBIAN "
2021-02-21 20:33:38 +01:00
URLENCODE_FILE_NAME = $( echo ${ file } | jq -Rr @uri)
2021-04-23 00:21:49 +02:00
### MEDIAKEY FORGE
2021-02-18 00:33:06 +01:00
########################################################################
2021-06-17 19:15:50 +02:00
## CREATE NEW ipns KEY : ${MEDIAKEY}
2021-02-18 00:33:06 +01:00
########################################################################
2021-04-06 02:47:04 +02:00
## IPFS SELF IPNS DATA STORAGE
2021-09-02 01:41:21 +02:00
## ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/
2021-02-18 00:33:06 +01:00
########################################################################
2021-06-17 19:15:50 +02:00
if [ [ ! $( ipfs key list | grep " ${ MEDIAKEY } " ) ] ] ; then
2021-09-02 01:41:21 +02:00
## IPNS KEY CREATION
mkdir -p ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB }
KEY = $( ipfs key gen " ${ MEDIAKEY } " )
2021-09-18 20:46:37 +02:00
# KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1) # get name of last created key (could be fooled during stargate exchange)
KEYFILE = $( ~/.zen/astrXbian/zen/tools/give_me_keystore_filename.py " ${ MEDIAKEY } " ) # better method applied
2021-04-06 02:47:04 +02:00
fi
## IS IT NEW IPNS KEY?
2021-02-18 00:33:06 +01:00
if [ [ $KEY ] ] ; then
2021-09-02 14:37:02 +02:00
echo "CREATING NEW IPNS MEDIAKEY"
2021-09-02 01:41:21 +02:00
# memorize IPNS key filename for easiest exchange
echo " $KEYFILE " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipns.key.keystore_filename
# Publishing IPNS key
echo " $KEY " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipns.link
# CREATE .zen = ZEN economic value
touch ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.zen
# CREATE other encrypted copies for friends depending DEFCON & stars
# > STARGATE 1 - 2 - 3 - 4 - 5 !!
################ ENCRYPT keystore/$KEYFILE
2021-03-02 13:24:45 +01:00
else
2021-09-02 01:41:21 +02:00
KEY = $( cat ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipns.link)
KEYFILE = $( cat ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipns.key.keystore_filename)
2021-09-23 04:42:40 +02:00
echo " ## ALREADY EXISTING IPNS KEY $KEYFILE ( $KEY ) "
2021-02-18 00:33:06 +01:00
fi
2021-06-17 14:49:28 +02:00
[ [ ! $KEY ] ] && echo "FATAL ERROR" && exit 1
2021-04-06 02:47:04 +02:00
########################################################################
## add default metadata (TODO = use json file?)
########################################################################
2021-07-06 03:42:43 +02:00
FILE_BSIZE = $( du -b " ${ path } ${ file } " | awk '{print $1}' )
2021-07-03 16:19:56 +02:00
echo " ${ FILE_BSIZE } " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.filesize
2021-06-17 19:15:50 +02:00
echo " ${ file } " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipfs.filename
echo " ${ TITLE } " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.title
echo " $( date -u +%s%N | cut -b1-13) " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.timestamp
2021-04-06 02:47:04 +02:00
## INIT MEDIAKEY .views.counter
2021-06-17 19:15:50 +02:00
echo "0" > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.views.counter
2021-04-06 02:47:04 +02:00
########################################################################
########################################################################
# Prepare IPFS links (then cyphered to manage exchange regulation)
########################################################################
2021-04-04 17:52:53 +02:00
echo " /ipfs/ $IPFSREPFILEID / ${ file } " > /tmp/.ipfs.filelink
echo " $IPFSID " > /tmp/.ipfsid
2021-04-06 02:47:04 +02:00
########################################################################
########################################################################
################ ask autoPIN to one shuffle A_boostrap_nodes
########################################################################
2021-05-09 22:25:26 +02:00
PINIPFSnode = $( cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#" | shuf | tail -n 1)
nodeid = ${ PINIPFSnode ##*/ }
PINnode = $( ~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $nodeid )
2021-04-06 02:47:04 +02:00
echo " ASK AUTOPIN to $PINnode "
## CREATE $PINnode IPFS communication directory
2021-09-23 04:04:34 +02:00
if [ [ ! -d ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode } && " $PINnode " != " $G1PUB " ] ] ; then
mkdir -p ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode }
## ENCRYPT .ipfsid & .ipfs.filelink (THESE FILES ARE
$MY_PATH /tools/natools.py encrypt -p $PINnode -i /tmp/.ipfs.filelink -o " ~/.zen/ipfs/. ${ IPFSNODEID } /KEY/ ${ MEDIAKEY } / ${ G1PUB } / ${ PINnode } /.ipfs.filelink.encrypt "
$MY_PATH /tools/natools.py encrypt -p $PINnode -i /tmp/.ipfsid -o " ~/.zen/ipfs/. ${ IPFSNODEID } /KEY/ ${ MEDIAKEY } / ${ G1PUB } / ${ PINnode } /.ipfsid.encrypt "
# .ipfsid.encrypt is searched by each Station running ./zen/tools/autoPINfriends.sh
fi
2021-06-14 16:59:35 +02:00
########################################################################
2021-06-14 16:35:38 +02:00
## GREAT natools can convert IPNS MEDIAKEY into .dunikey file
########################################################################
2021-06-14 16:59:35 +02:00
# CREATING QRCODE
2021-06-17 19:15:50 +02:00
$MY_PATH /tools/natools.py privkey -f ipfs-keystore -k $HOME /.ipfs/keystore/$KEYFILE -F pubsec -o /tmp/${ MEDIAKEY } .dunikey
2021-09-19 01:28:04 +02:00
# PubFromDunikey=$(cat /tmp/${MEDIAKEY}.dunikey | grep "sec" | cut -d ' ' -f2 | base58 -d | tail -c+33 | base58) ## HOWTO EXTRACT PUBKEY FROM SECKEY
2021-06-17 19:15:50 +02:00
PubFromDunikey = $( cat /tmp/${ MEDIAKEY } .dunikey | grep "pub" | cut -d ' ' -f2)
qrencode -s 6 -o " $HOME /.zen/ipfs/. ${ IPFSNODEID } /KEY/ ${ MEDIAKEY } /QR.png " " $PubFromDunikey "
2021-06-30 23:51:51 +02:00
echo " $PubFromDunikey " > $HOME /.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /MEDIAPUBKEY
2021-06-17 17:01:55 +02:00
2021-06-14 16:35:38 +02:00
########################################################################
2021-06-17 19:41:02 +02:00
## MEDIAKEY => DUNIKEY + PASS 6 DIGITS openssl protection
2021-06-17 14:49:28 +02:00
########################################################################
2021-06-29 02:46:45 +02:00
PASS = $( echo " ${ RANDOM } ${ RANDOM } ${ RANDOM } ${ RANDOM } " | tail -c-7) && echo " $PASS " > /tmp/${ MEDIAKEY } .pass
2021-06-17 19:15:50 +02:00
openssl enc -aes-256-cbc -salt -in /tmp/${ MEDIAKEY } .dunikey -out " $HOME /.zen/ipfs/. ${ IPFSNODEID } /KEY/ ${ MEDIAKEY } /dunikey.enc " -k $PASS
2021-06-17 14:49:28 +02:00
## STATION & BOOTSTRAP ACCESS TO PASS
2021-06-17 19:15:50 +02:00
$MY_PATH /tools/natools.py encrypt -p $G1PUB -i /tmp/${ MEDIAKEY } .pass -o $HOME /.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.pass.encrypt
$MY_PATH /tools/natools.py encrypt -p $PINnode -i /tmp/${ MEDIAKEY } .pass -o $HOME /.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode } /.pass.encrypt
## DECODE MEDIAKEY.dunikey ##
# ~/.zen/astrXbian/zen/tools/natools.py decrypt -f pubsec -k "$HOME/.zen/secret.dunikey" -i "$HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.pass.encrypt" -o "/tmp/${MEDIAKEY}.pass"
# openssl enc -aes-256-cbc -d -in "$HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/dunikey.enc" -out "/tmp/${MEDIAKEY}.dunikey" -k $(cat "/tmp/${MEDIAKEY}.pass")
2021-09-19 01:28:04 +02:00
rm /tmp/${ MEDIAKEY } .dunikey
2021-06-17 14:49:28 +02:00
########################################################################
2021-06-17 19:41:02 +02:00
## GET .ipfs/keystore file MAHE .ipns.mediakey.encrypt
2021-06-14 16:59:35 +02:00
# used in ipns_TAG_refresh.sh & autoPINfriends.sh
2021-06-14 16:35:38 +02:00
########################################################################
2021-06-17 19:15:50 +02:00
$MY_PATH /tools/natools.py encrypt -p $G1PUB -i $HOME /.ipfs/keystore/$KEYFILE -o $HOME /.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipns.mediakey.encrypt
$MY_PATH /tools/natools.py encrypt -p $PINnode -i $HOME /.ipfs/keystore/$KEYFILE -o $HOME /.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode } /.ipns.mediakey.encrypt
2021-06-14 11:20:34 +02:00
2021-04-06 02:47:04 +02:00
## Init zen, views counters & visitor
2021-06-17 19:15:50 +02:00
echo "0" > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode } /.zen
echo "0" > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode } /.views.counter
echo "anonymous" > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /${ PINnode } /.visitor
2021-04-06 02:47:04 +02:00
########################################################################
# MEMORIZE my PIN
mkdir -p ~/.zen/PIN/${ IPFSREPFILEID } /
touch ~/.zen/PIN/${ IPFSREPFILEID } /${ G1PUB }
2021-09-23 04:42:40 +02:00
# echo "$(ipfs key list -l | grep ${MEDIAKEY} | cut -d ' ' -f 1)" > ~/.zen/PIN/${ipfsrepidfile}/IPNSLINK # NO!! Would let PINing nodes change index.html///
2021-04-06 02:47:04 +02:00
########################################################################
2021-04-04 17:52:53 +02:00
## encrypt links for myself
2021-04-06 02:47:04 +02:00
########################################################################
2021-06-17 19:15:50 +02:00
$MY_PATH /tools/natools.py encrypt -p ${ G1PUB } -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipfs.filelink.natools.encrypt
$MY_PATH /tools/natools.py encrypt -p ${ G1PUB } -i /tmp/.ipfsid -o ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.ipfsid.encrypt
2021-04-04 17:52:53 +02:00
rm /tmp/.ipfs.filelink
rm /tmp/.ipfsid
2021-04-06 02:47:04 +02:00
########################################################################
2021-03-02 11:13:24 +01:00
2021-04-06 02:47:04 +02:00
########################################################################
2021-04-06 19:36:43 +02:00
## ADD "ajouter_video.txt" and "video.json" will be SELF IPNS publish data
2021-09-02 02:09:46 +02:00
## ENCRYPT TO STOP CLEAR DATA LEAKING
2021-09-02 01:41:21 +02:00
[ [ -f ~/astroport/${ TYPE } /${ REFERENCE } /ajouter_video.txt ] ] && cp -f ~/astroport/${ TYPE } /${ REFERENCE } /ajouter_video.txt ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /
2021-09-18 20:57:28 +02:00
[ [ -f ~/astroport/${ TYPE } /${ REFERENCE } /video.json ] ] && cp -f ~/astroport/${ TYPE } /${ REFERENCE } /video.json ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } / && cp -f ~/astroport/${ TYPE } /${ REFERENCE } /video.json ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /
2021-04-06 02:47:04 +02:00
########################################################################
2021-03-17 16:41:56 +01:00
########################################################################
2021-04-04 17:52:53 +02:00
## EXPLANATIONS
2021-03-17 16:41:56 +01:00
########################################################################
2021-06-17 19:15:50 +02:00
# What is being in ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/
2022-04-18 16:09:28 +02:00
# is published on http://127.0.0.1:8080/ipns/$KEY/ AND ipfs ls /ipns/$KEY/
2021-03-17 16:41:56 +01:00
########################################################################
2021-04-06 02:47:04 +02:00
########################################################################
2021-04-04 17:52:53 +02:00
# CONTRACTS, are small App (fulljs or jquery + nginx backend app server)
2021-09-02 01:41:21 +02:00
# They must decrypt IPFS after succeeding a chalenge (, +/- n zen, ...)
2021-03-17 16:41:56 +01:00
########################################################################
2021-04-04 17:52:53 +02:00
# Contract App Examples (ipns_TAG_refresh.sh makes MEDIAKEY evolution)
# Counting video views = +1 .views.counter => decrypt key
# Balancing Zen wallets = -n form source = +n for destination => decrypt key
2021-03-17 16:41:56 +01:00
########################################################################
2021-04-04 17:52:53 +02:00
# Astroport/Gchange USE as public/private media copy friend of friends swarm
# one star level (no encrypt)
2021-03-17 16:41:56 +01:00
# index.html is presenting Astroport/Kodi service then redirect to
# $G1PUB/index.html contains redirection to ipfs link
2021-04-04 17:52:53 +02:00
########################################################################
2021-03-02 11:13:24 +01:00
2021-04-06 02:47:04 +02:00
########################################################################
## IPNS access to index.html
## Level 1 (not crypted) -> Redirect to ipfs streaming link
2021-07-06 02:06:49 +02:00
IPNSLINK = $( ipfs key list -l | grep ${ MEDIAKEY } | cut -d ' ' -f 1)
## FIRST REDIRECT PAGE ${MEDIAKEY}/index.html
# https://tube.copylaradio.com/ipns/$IPNSLINK
2021-08-27 19:47:18 +02:00
#envsubst < ./www/boris/youtube_watch_step2.html > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/index.html
2021-09-17 01:49:39 +02:00
2021-09-19 20:44:15 +02:00
echo "=======> Mediakey Welcome index.html "
cat /home/$YOU /.zen/astrXbian/www/boris/youtube_watch_step2.html \
| sed " s/\${IPNSLINK}/ $IPNSLINK /g " \
2021-09-19 21:41:32 +02:00
| sed " s/\${IPFSNODEID}/ $IPFSNODEID /g " \
2021-09-19 20:44:15 +02:00
| sed " s/\${XZUID}/ $XZUID /g " \
| sed " s/\${G1PUB}/ $G1PUB /g " \
| sed " s/\${TITLE}/ $TITLE /g " \
2022-04-16 01:04:51 +02:00
> ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIA
KEY} /index.html
2021-03-02 13:24:45 +01:00
2021-07-06 02:06:49 +02:00
## SECOND REDIRECT PAGE ${MEDIAKEY}/${G1PUB}/index.html
# https://tube.copylaradio.com/ipns/$IPNSLINK/${G1PUB}/
2021-09-17 01:49:39 +02:00
#envsubst < ../www/boris/youtube_watch_step3.html > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/index.html
2021-09-19 20:44:15 +02:00
echo "=======> Mediakey Contract index.html "
cat /home/$YOU /.zen/astrXbian/www/boris/youtube_watch_step3.html \
2021-09-18 20:57:28 +02:00
| sed " s/\${TITLE}/ $TITLE /g " \
2021-09-19 20:44:15 +02:00
| sed " s/\${IPFSNODEID}/ $IPFSNODEID /g " \
2021-09-18 20:57:28 +02:00
| sed " s/\${XZUID}/ $XZUID /g " \
| sed " s/\${IPFSREPFILEID}/ $IPFSREPFILEID /g " \
| sed " s/\${URLENCODE_FILE_NAME}/ $URLENCODE_FILE_NAME /g " \
2021-09-29 22:08:23 +02:00
> ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /index.html
2021-08-27 19:47:18 +02:00
2022-04-18 16:09:28 +02:00
# echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://127.0.0.1:8080/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME\">" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/index.html
2021-07-06 02:06:49 +02:00
########################################################################
## MODIFY INTO "./zen/ipns_TAG_refresh.sh" (add crypto/contracts there)
########################################################################
2021-07-03 16:19:56 +02:00
2021-06-16 22:23:06 +02:00
## COPY LOCALHOST IPFS URL TO CLIPBOARD
2022-04-18 16:09:28 +02:00
[ [ $( which xclip) ] ] && echo " http://127.0.0.1:8080/ipfs/ $IPFSREPFILEID / $URLENCODE_FILE_NAME " | xclip -selection c
2021-06-16 22:23:06 +02:00
2021-06-17 14:49:28 +02:00
########################################################################
2021-04-06 02:47:04 +02:00
########################################################################
## PUBLISH new IPNS
2021-06-17 14:49:28 +02:00
########################################################################
2021-06-20 23:45:00 +02:00
echo " $( date -u +%s%N | cut -b1-13) " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /.timestamp
2021-09-21 01:38:38 +02:00
2021-06-20 23:45:00 +02:00
NEWIPFS = $( ipfs add -rHq ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } / | tail -n 1 )
2021-09-21 01:38:38 +02:00
[ [ " $NEWIPFS " = = "" ] ] && echo " ~~~ FAILURE ~~~ ipfs add -rHq ~/.zen/ipfs/. ${ IPFSNODEID } /KEY/ ${ MEDIAKEY } / | tail -n 1 " && exit 1
## ADD CHAIN BLOCK ZERO (will be updated by ipns_TAG_refresh.sh)
echo $NEWIPFS > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /.chain
2021-06-17 19:15:50 +02:00
IPNS = $( ipfs name publish --quieter --key= " ${ MEDIAKEY } " $NEWIPFS )
2021-09-21 01:38:38 +02:00
[ [ " $IPNS " = = "" ] ] && echo " ~~~ PROBLEM ~~~ ipfs name publish --quieter --key= ${ MEDIAKEY } $NEWIPFS "
2021-02-18 00:33:06 +01:00
########################################################################
2021-06-17 14:49:28 +02:00
########################################################################
2021-02-18 00:33:06 +01:00
2021-06-17 14:49:28 +02:00
########################################################################
2021-09-02 01:41:21 +02:00
# POST TRAITEMENTS
2021-02-18 00:33:06 +01:00
########################################################################
2021-06-14 11:20:34 +02:00
# film/serie PUBLISH "ajouter_video.txt" for KODI
2021-02-18 00:33:06 +01:00
########################################################################
2021-06-14 11:20:34 +02:00
if [ [ " ${ CAT } " = ~ ^( film| serie| youtube) $ ] ]
2021-03-02 11:13:24 +01:00
then
2021-09-02 01:41:21 +02:00
## CREATE GCHANGE AD
if [ [ ! -f ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.gchange.ad && " ${ CAT } " != "youtube" ] ]
then
2021-09-19 21:41:32 +02:00
2021-09-02 01:41:21 +02:00
GOFFER = $( ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" setoffer -t " ${ TITLE } #astroport # ${ MEDIAKEY } " -d " ${ TITLE } https://tube.copylaradio.com/ipns/ $IPNS / Faites un don à son portefeuille pour le conserver dans le Mediacenter des Amis - https://CopyLaRadio.com - https://astroport.com " -p $HOME /.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /QR.png)
echo $GOFFER > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.gchange.ad
NEWIPFS = $( ipfs add -rHq ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } / | tail -n 1 )
IPNS = $( ipfs name publish --quieter --key= " ${ MEDIAKEY } " $NEWIPFS )
2021-09-19 21:41:32 +02:00
echo " Annonce gchange : $( cat ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /.gchange.ad) "
2021-09-02 01:41:21 +02:00
fi
########################################################################
2021-09-19 21:41:32 +02:00
# CREATION DU FICHIER ${PREFIX}ASTRXBIAN FILE : Add Header
2021-09-02 01:41:21 +02:00
[ [ ! -f ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN ] ] \
2022-04-18 16:09:28 +02:00
&& echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8080" > ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN
2021-09-02 01:41:21 +02:00
# ADD NEW LINE TO INDEX
if [ [ -f ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /ajouter_video.txt ] ]
then
line = $( cat ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /ajouter_video.txt | sed " s/_IPFSREPFILEID_/ $IPFSREPFILEID /g " | sed " s/_IPNSKEY_/ $IPNS /g " )
else
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
line = " $CAT ; ${ REFERENCE } ; $YEAR ; $TITLE ; $SAISON ;; ${ IPNS } ; $RES ;/ipfs/ $IPFSREPFILEID / $URLENCODE_FILE_NAME "
fi
echo "-------------------- UPDATE MY INDEX -----------------------------"
echo " $line "
echo " $line " >> ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN
echo " UPDATE IPNS ~/.zen/ipfs/. ${ IPFSNODEID } /KEY/ ${ MEDIAKEY } /ajouter_video.txt "
echo " $line " > ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /ajouter_video.txt
## UPDATE SOURCE ajouter_video.txt FILE
cp -f ~/.zen/ipfs/.${ IPFSNODEID } /KEY/${ MEDIAKEY } /${ G1PUB } /ajouter_video.txt ~/astroport/${ TYPE } /${ REFERENCE } /ajouter_video.txt
########################################################################
## TODO: ACTIVATE SUB DEFCON 4 MODE = encrypt/decrypt file in $G1DEST subdirectory
########################################################################
echo "----------------- REFRESH LOCAL KODI INDEX ----------------------"
cat ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${ PREFIX } ASTRXBIAN | sort | uniq > ~/.zen/ipfs/.${ IPFSNODEID } /${ PREFIX } ASTRXBIAN
2020-12-24 15:00:48 +01:00
fi
2021-06-17 15:49:44 +02:00
########################################################################
# PUBLISH GENERAL video
########################################################################
if [ [ " ${ CAT } " = = "video" ] ]
then
2021-09-02 01:41:21 +02:00
## REPLACE IPFS / IPNS REFERENCE IN video.json (Maybe cyphered later)
cat ~/astroport/${ CAT } /${ MEDIAKEY } /video.json | sed " s/_IPFSREPFILEID_/ $IPFSREPFILEID /g " | sed " s/_IPNSKEY_/ $IPNS /g " >> ~/.zen/ipfs/.${ IPFSNODEID } /astroport/kodi/vstream/${ PREFIX } ASTRXBIAN
2021-06-17 15:49:44 +02:00
fi
2021-09-14 20:12:00 +02:00
#########################################################################
# PUBLISH YOUTUBE video to /astroport/wordpress/ DATA NOT USED ANY MORE... semaphore à régler
#########################################################################
2021-04-04 20:43:21 +02:00
if [ [ " ${ CAT } " = = "youtube" ] ]
then
2021-09-02 01:41:21 +02:00
## CREATE astroport call to Astroport/Wordpress stations
if [ [ ! -d ~/.zen/ipfs/.$IPFSNODEID /astroport/wordpress/${ MEDIAKEY } ] ] ; then
mkdir -p ~/.zen/ipfs/.$IPFSNODEID /astroport/wordpress/${ MEDIAKEY }
echo "1" > ~/.zen/ipfs/.$IPFSNODEID /astroport/wordpress/${ MEDIAKEY } /do
fi
2021-04-04 20:43:21 +02:00
fi
2021-03-13 23:35:37 +01:00
2021-04-04 17:52:53 +02:00
########################################################################
2021-02-17 03:33:41 +01:00
2021-01-10 17:58:41 +01:00
########################################################################
2021-02-17 03:33:41 +01:00
# REFRESH IPNS SELF PUBLISH
########################################################################
~/.zen/astrXbian/zen/ipns_self_publish.sh
########################################################################
2021-06-17 14:49:28 +02:00
echo " DUNIKEY PASS $PASS "
2022-04-18 16:09:28 +02:00
echo " NEW $TYPE ( $file ) ADDED. http://127.0.0.1:8080/ipfs/ $IPFSREPFILEID / $URLENCODE_FILE_NAME "
echo " INDEX UPDATED : http://127.0.0.1:8080/ipns/ ${ IPFSNODEID } /. ${ IPFSNODEID } / ${ PREFIX } ASTRXBIAN "
echo " VIDEO IPNS LINK : http://127.0.0.1:8080/ipns/ $KEY / $G1PUB / "
2021-09-29 22:08:23 +02:00
echo "#### EXCECUTION TIME"
end = ` date +%s`
echo Execution time was ` expr $end - $start ` seconds.
echo "########################################################################"
2021-02-25 00:16:39 +01:00
exit 0