forked from axiom-team/astrXbian
79 lines
3.9 KiB
Bash
Executable File
79 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
########################################################################
|
|
# Author: Astrocrew
|
|
# 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) && [[ ! $YOU ]] && echo "ipfs NOT RUNNING. EXIT" && exit 1
|
|
G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) && [[ ! $G1PUB ]] && echo "NO ~/.zen/secret.dunikey EXIT" && exit 1
|
|
IPFSNODEID=$(ipfs --timeout=20s id -f='<id>\n') && [[ ! $IPFSNODEID ]] && echo 'NO IPFS RUNNING. EXIT' && exit 1
|
|
|
|
MEDIAKEYIPNS="$1"&& [[ ! $MEDIAKEYIPNS ]] && echo 'NO MEDIAKEY. Enter ipns/??? value. EXIT' && exit 1
|
|
OPENACCES="$2" && [[ ! $OPENACCES ]] && echo 'OPEN ACCES TO "$2=$G1PUB"'
|
|
|
|
tempdir=$(mktemp -d)
|
|
cd $tempdir
|
|
|
|
## GET CURRENT DHT PROPAGATED VERSION
|
|
ipfs --timeout=10s get --output="$tempdir" /ipns/$MEDIAKEYIPNS
|
|
[[ ! $? == 0 ]] && echo "CANNOT GET MEDIAKEY" && exit 1
|
|
|
|
## DO I OWN THE KEY, OR SHOUD I REQUEST IT
|
|
MEDIAKEY=$(cat ./*/.id | tail -n 1)
|
|
[[ ! $MEDIAKEY ]] && echo "MISSING MATCHING MEDIAKEY ID" && exit 1
|
|
if [[ ! $(ipfs key list -l | grep $MEDIAKEY) ]]; then
|
|
## SEND A MESSAGE ASKING FOR THE KEY (I am a bootstrap or http gateway)
|
|
for sharedowners in $(ls -d */ | cut -d '/' -f 1); do
|
|
~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" send -d "$sharedowners" -t "MEDIAKEY ask for sharing contract" -m "I was wishing to increment $MEDIAKEY views, but not in your contracts yet. Please send me your ./ipfs/keystore/$MEDIAKEYIPNS to activate."
|
|
done
|
|
exit 1
|
|
fi
|
|
|
|
## INCREMENT COUNTER
|
|
## GO INTO $G1PUB EXCHANGE SPACE
|
|
[[ ! -d ./$G1PUB ]] && echo "MISSING RELATION WITH $G1PUB. EXIT" && exit 1
|
|
cd $G1PUB
|
|
count=$(cat .views.counter 2>/dev/null) || count=0
|
|
echo $((count+1)) > .views.counter
|
|
|
|
|
|
if [[ $OPENACCES ]]; then
|
|
echo "Creating ${OPENACCES}/.ipns.mediakey.encrypt and .ipfsid.encrypt"
|
|
## CREATE OFFICIAL RELATION DETECTED BY autoPINfriends.sh with ~/.zen/ipfs_swarm/.12D*/KEY/*/*/${G1PUB}/.ipfsid.encrypt
|
|
mkdir -p /home/$YOU/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${OPENACCES}/
|
|
key2send=$(/home/$YOU/.zen/astrXbian/zen/tools/give_me_keystore_filename.py $MEDIAKEY)
|
|
/home/$YOU/.zen/astrXbian/zen/tools/natools.py encrypt -p ${OPENACCES} -i /home/$YOU/.ipfs/keystore/$key2send -o /home/$YOU/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${OPENACCES}/.ipns.mediakey.encrypt
|
|
|
|
/home/$YOU/.zen/astrXbian/zen/tools/natools.py decrypt -f pubsec -k "/home/$YOU/.zen/secret.dunikey" -i "/home/$YOU/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipfsid.encrypt" -o "./ipfsid_$MEDIAKEY.txt"
|
|
/home/$YOU/.zen/astrXbian/zen/tools/natools.py encrypt -p ${OPENACCES} -i ./ipfsid_$MEDIAKEY.txt -o /home/$YOU/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${OPENACCES}/.ipfsid.encrypt
|
|
## Ask PIN to Bootstraps executed through autoPINfriends.sh
|
|
rm ./ipfsid_$MEDIAKEY.txt
|
|
|
|
|
|
|
|
## TODO COULD SEND JUNE FOR THAT?
|
|
syncronizedir="/home/$YOU/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}"
|
|
else
|
|
syncronizedir="$tempdir"
|
|
fi
|
|
|
|
echo "WE ARE in $syncronizedir"
|
|
cd $syncronizedir
|
|
## PUBLISH NEW STATE
|
|
I=$(ipfs add -qrH $syncronizedir | tail -n 1)
|
|
echo "CHAIN: $I"
|
|
echo "$(date -u +%s%N | cut -b1-13)" > .timestamp
|
|
echo $I > .chain
|
|
I=$(ipfs add -qrH $syncronizedir | tail -n 1)
|
|
echo "${MEDIAKEY} NAME PUBLISHING "
|
|
# MEDIAKEY IPNS name publish
|
|
J=$(ipfs --timeout=180s name publish --quieter -k ${MEDIAKEY} /ipfs/${I})
|
|
echo "$MEDIAKEY VIEW COUNTER UPDATED in https://tube.copylaradio.com/ipns/$J/$G1PUB/.views.counter"
|
|
|