forked from axiom-team/astroport
165 lines
7.5 KiB
Bash
Executable File
165 lines
7.5 KiB
Bash
Executable File
#!/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"
|
|
# }
|
|
#
|
|
#############################################################################################################
|
|
# ./shell/tag_LOAD_passenger.sh G1TagIPNS FileID MusicFile MASTERKEY
|
|
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"
|
|
if [[ "$USER" != "root" ]]; then echo "__SUB:tag_LOAD_passenger.sh: Hey, $USER you must be root. 'sudo ./shell/tag_LOAD_passenger.sh ...' ?"; exit; fi
|
|
|
|
#############################################
|
|
############## 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
|
|
./shell/natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
|
|
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")
|
|
./shell/natools.py encrypt -p "$NODE_G1PUBKEY" -i "$TAGPASSENGER" -o "$TAGPASSENGERCRYPT"
|
|
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.
|
|
mkdir -p ./wallets/.$IPFSNODEID/TAG/
|
|
echo "$TUBEID" > "./wallets/.$IPFSNODEID/TAG/${J}.youtubeid"
|
|
|
|
##########################
|
|
# REFRESH SWARM
|
|
##########################
|
|
IWALLETS=$(su $YOU -c "ipfs add -rHq './wallets' | tail -n 1")
|
|
|
|
# CHAIN STATE FOR $IPFSNODEID
|
|
echo $IWALLETS > ./wallets/.$IPFSNODEID.wallets.chain
|
|
echo "__SUB:tag_LOAD_passenger.sh: NEW './wallets' HASH ipfs ls $IWALLETS"
|
|
|
|
# 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
|