2020-05-01 15:19:51 +02:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
###########################################################################################
# LOAD MUSIC FILE IN G1TAG... + SHELL OPCODE INJECTED INTO G1TAG
# sudo pip3 install duniterpy
###########################################################################################
# ipfs ls /ipns/QmY6ooFcsGXY4VSindqKMz9GvrprFXY32RrsTmqvVTYQX5
# QmZ3RfWk1u5LEGYLHA633B5TNJy3Du27K6Fny9wcxpowGS 4 TAG_amount
# QmXizDydPuiBd1V7JBVY5kdppShm9xdk2aoYj7c8V8Foxe 47 TAG_chain
# QmeHHBZKtLJHr11rwXKeimwDE4i3nLMy2VPkWZsNaFasg1 4 TAG_currency
# QmSjBDpjnoxnQT5RWRnyLxqwE3ovSRVb7xjwZoiufZAv3E 39 TAG_id
# QmUQcSjQx2bg4cSe2rUZyQi6F8QtJFJb74fWL7D784UWf9 2 TAG_n
# QmdbdBWv4SygqaaeWHAvABiQAa3faf4ncfSyzRnx8BDdCc 20 TAG_nanodate
# QmbN6gNM2vjLj7yaJ6xJcySDxmuSK2eB9ZDv5dpj2bo5pM 47 TAG_nodeid
# QmXaMzRqhEs4cQMRN18FWaCeqGmrDBfV8hTkbfQuBCXnnA 1243 TAG_publishkey.swarm.crypt
# QmWHsRZCTSjSxnp1Qm8WcmHNNQTJwDS2ukLE7NTccc3Kp9 1304 TAG_publishkey.B.gpg
# TAG_passenger, TAG_file is used to attach G1Tag to file.
# ADD A PASSENGER FILE (Web2.0ID) INTO a G1Tag + Add INIT credit/debit values to live in SWARM.
# GRAB a G1Tag CAPSULE + PUT A PASSENGER MUSIC FILE IN IT
#### TODO USE "ipfs dag" + json
# {
# "type": "REC_YOUTUBE",
# "search": "${MUSICFILE}",
# "id": "vLXHXGoXuBU",
# "title": "Tale Of Us - Oliver Koletzki - Miss Monique - More Artist • New Life III (DifferentSound Mix)",
# "size": 123,
# "debit": 10,
# "credit": 1,
# "file": {
# "ld": "LDhashIPFS",
# "sd": "SDhashIPFS",
# "hd": "HDhashIPFS"
# },
# "g1tag": "RR",
# "ipns": "J",
# "ld": "ZEN",
# "sd": "ZEN",
# "hd": "EUR"
# }
#
#############################################################################################################
2020-05-03 23:37:47 +02:00
# ./tag_LOAD_passenger.sh G1TagIPNS FileID MusicFile MASTERKEY
2020-05-01 15:19:51 +02:00
JSOURCE = $1
TUBEID = $2
MUSICFILE = $3
KEYFILE = $4
# EXTENSION (Define Debit for Hosting / Credit for Reading)
DEB = $5
CRED = $6
if [ [ ! $DED ] ] ; then DED = 10; fi
if [ [ ! $CRED ] ] ; then CRED = 1; fi
if [ [ ! -f " $KEYFILE " || ! -f " $MUSICFILE " || ! -f "./g1sms.pub.key" ] ] ; then " Do you know what you are doing? MUSICFILE= $MUSICFILE ? KEYFILE= $KEYFILE ? " ; exit; fi
#############################################
############## INIT & root check
NANODATE = $( date -u +%s%N)
echo " __SUB:tag_LOAD_passenger.sh: LOAD \" $MUSICFILE \" into REC G1Tag $JSOURCE indexed by $TUBEID (using $KEYFILE )... $NANODATE "
2020-05-03 23:37:47 +02:00
if [ [ " $USER " != "root" ] ] ; then echo " __SUB:tag_LOAD_passenger.sh: Hey, $USER you must be root. 'sudo ./tag_LOAD_passenger.sh ...' ? " ; exit; fi
2020-05-01 15:19:51 +02:00
#############################################
############## CHECK ipfs daemon user
YOU = $( ps aux --sort= +utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
if [ [ " $YOU " = = "" || " $YOU " = = "root" ] ] ; then echo " __SUB:tag_LOAD_passenger.sh: BAD IPFS. Aucune installation IPFS satisfaisante ici... Ciao $YOU ! " ; exit; fi
IPFSNODEID = $( su $YOU -c "ipfs id -f='<id>\n'" )
######################################################
############## EXTRACT $JSOURCERR key, amount, nodeid
JSOURCERR = $( su $YOU -c " ipfs cat /ipns/ $JSOURCE /TAG_id | sed s/\ //g " ) ;
if [ [ " $JSOURCERR " = = "" ] ] ; then echo " __SUB:tag_LOAD_passenger.sh: G1TAG DETRUIT. Aucun G1Tag /ipns/ $JSOURCERR ici... Ciao. " ; exit; fi
mkdir -p ./TAG/${ JSOURCERR } ; rm -f ./TAG/${ JSOURCERR } /*
echo " __SUB:tag_LOAD_passenger.sh: LOG. Hey You get a G1Tag!! GET IT now: ipfs get --output=./TAG/ ${ JSOURCERR } / /ipns/ $JSOURCE "
chown -R $YOU ./TAG/${ JSOURCERR } /
su $YOU -c " ipfs get --output=./TAG/ ${ JSOURCERR } / /ipns/ $JSOURCE " 2>& 1
JSOURCEPUBLISHKEY = " ./TAG/ ${ JSOURCERR } /TAG_publishkey.swarm.crypt "
JSOURCEVALUE = $( cat ./TAG/${ JSOURCERR } /TAG_amount)
TAGNODEID = $( cat ./TAG/${ JSOURCERR } /TAG_nodeid)
TAGPASSENGER = " ./TAG/ ${ JSOURCERR } /TAG_passenger " # contains HASH for PASSENGER FILE (CRYPT & PUBLISH)
#############################################
# CAN IT LOAD PASSENGER ?
if [ [ ! -f $TAGPASSENGER ] ] ; then
echo " __SUB:tag_LOAD_passenger.sh: G1TAG transmis pas encore transformé en REC TAG... Ciao $YOU ! " ;
exit
else
passenger = $( cat $TAGPASSENGER )
if [ [ " $passenger " != "READY" ] ] ; then echo " __SUB:tag_LOAD_passenger.sh: REC TAG not READY ( $passenger )! " ; exit; # COMMENT TO ALLOW REWRITE
fi
fi
#############################################
# ONLY CREATOR NODE CAN LOAD G1TAG
if [ [ " $IPFSNODEID " != " $TAGNODEID " ] ] ; then
echo " __SUB:tag_LOAD_passenger.sh: Ce G1Tag est géré par $TAGNODEID (vous êtes $IPFSNODEID ) "
exit
fi
#############################################
############## EXTRACT $JSOURCERR PUBLISH KEY
if [ [ -f " $KEYFILE " ] ] ; then
2020-05-03 23:37:47 +02:00
./natools.py decrypt -k " $KEYFILE " -i " $JSOURCEPUBLISHKEY " -o " /home/ $YOU /.ipfs/keystore/ $JSOURCERR "
2020-05-01 15:19:51 +02:00
else
echo " __SUB:tag_LOAD_passenger.sh: KO. La clef $KEYFILE fournie pour ce G1Tag $JSOURCERR est inexistante. Procurez-vous un portefeuille monnaie libre sur https://g1sms.fr "
exit
fi
#############################################
############## G1TAG OPERATION
NN = $( cat ./TAG/${ JSOURCERR } /TAG_n) ; ( ( NN++) ) ; echo " $NN " > " ./TAG/ ${ JSOURCERR } /TAG_n "
TAGTYPE = " ./TAG/ ${ JSOURCERR } /TAG_type " # contains PASSENGER TYPE ("" = G1, YOUTUBE, any "REC SRC")
TAGPASSENGERID = " ./TAG/ ${ JSOURCERR } /TAG_passenger_id " # contains PASSENGER ID (depending TYPE) YoutubeID,
TAGPASSENGERCRYPT = " ./TAG/ ${ JSOURCERR } /TAG_passenger.crypt " # contains HASH for PASSENGER FILE natools crypt with MASTERKEY
TAGPASSENGERDEBIT = " ./TAG/ ${ JSOURCERR } /TAG_passenger_debit " # Countains amount Passenger is Paying Daily to SWARM IPFS Nodes (PIN)
TAGPASSENGERCREDIT = " ./TAG/ ${ JSOURCERR } /TAG_passenger_credit " # Countains amount Node G1Tag must pay to PLAY file passenger
TAGPASSENGERSIZE = " ./TAG/ ${ JSOURCERR } /TAG_passenger_size " # contains File Size in Mo
echo "REC" > $TAGTYPE
echo " $TUBEID " > $TAGPASSENGERID
IFILE = $( su $YOU -c " ipfs add \" ${ MUSICFILE } \" | tail -n 1 " )
if [ [ ! $IFILE ] ] ; then exit; fi
echo " $IFILE " > $TAGPASSENGER
# ONLY SWARM KEY CAN DECRYPT IPFS LINK TO FILE (TODO: Glue better)
NODE_G1PUBKEY = $( cat "./g1sms.pub.key" )
2020-05-03 23:37:47 +02:00
./natools.py encrypt -p " $NODE_G1PUBKEY " -i " $TAGPASSENGER " -o " $TAGPASSENGERCRYPT "
2020-05-01 15:19:51 +02:00
echo "LOADED" > $TAGPASSENGER
echo " $DEB " > $TAGPASSENGERDEBIT
echo " $CRED " > $TAGPASSENGERCREDIT
#############################################
echo " ${ NANODATE } " > " ./TAG/ ${ JSOURCERR } /TAG_nanodate "
I = $( su $YOU -c " ipfs add -qr ./TAG/ ${ JSOURCERR } | tail -n 1 " )
# RECORD TAG_chain And HASH again before publish
echo " $I " > " ./TAG/ ${ JSOURCERR } /TAG_chain "
I = $( su $YOU -c " ipfs add -qr ./TAG/ ${ JSOURCERR } | tail -n 1 " )
# IPNS $JSOURCERR PUBLISH
J = $( su $YOU -c " ipfs name publish -k ${ JSOURCERR } --quieter /ipfs/ ${ I } " )
# TODO rm "/home/$YOU/.ipfs/keystore/$JSOURCERR"
# WRITE FILE REC INDEX IN NODE G1TAG REF.
2020-05-03 23:37:47 +02:00
mkdir -p ~/.zen/ipfs/.$IPFSNODEID /TAG/
echo " $TUBEID " > " ~/.zen/ipfs/. $IPFSNODEID /TAG/ ${ J } .youtubeid "
2020-05-01 15:19:51 +02:00
##########################
# REFRESH SWARM
##########################
2020-05-03 23:37:47 +02:00
IWALLETS = $( su $YOU -c "ipfs add -rHq '~/.zen/g1sms_wallets' | tail -n 1" )
2020-05-01 15:19:51 +02:00
# CHAIN STATE FOR $IPFSNODEID
2020-05-03 23:37:47 +02:00
echo $IWALLETS > ~/.zen/ipfs/.$IPFSNODEID .wallets.chain
echo " __SUB:tag_LOAD_passenger.sh: NEW '~/.zen/g1sms_wallets' HASH ipfs ls $IWALLETS "
2020-05-01 15:19:51 +02:00
# PUBLISH IPNS NODE WALLETS
NODEWALLETS = $( su $YOU -c " ipfs name publish --quieter /ipfs/ $IWALLETS " )
echo " __SUB:tag_LOAD_passenger.sh: YOUTUBE REC G1 TAG LOADED ( $TAGPASSENGERCRYPT ) <<<<<< https://youtube.com/watch?v= $TUBEID "
echo " __SUB:tag_LOAD_passenger.sh: ipfs cat /ipns/ $NODEWALLETS /. $IPFSNODEID /TAG/ ${ J } .youtubeid "
exit
echo " __SUB:tag_LOAD_passenger.sh: ZEN BALANCE: $JSOURCEVALUE Zen. HEB: $DEB / PLAY: $CRED "
exit