forked from axiom-team/astrXbian
70 lines
3.6 KiB
Bash
Executable File
70 lines
3.6 KiB
Bash
Executable File
#!/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##*/}"
|
|
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 "ERREUR G1PUB. EXIT" && exit 1
|
|
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
|
|
|
########################################################################
|
|
# SCAN AND MANAGE KEYS BETWEEN MOVIES & FRIENDS
|
|
## Control IPNS key $MEDIAKEY.4FRIENDS + create, catch & spread MEDIAKEY to FRIENDS
|
|
########################################################################
|
|
echo "DEV MODE" && exit 0
|
|
read
|
|
########################################################################
|
|
|
|
for FRIEND in $(ls ~/.zen/ipfs/.$IPFSNODEID/FRIENDS); do
|
|
[[ "$FRIEND" == "index.html" ]] && continue
|
|
echo "$FRIEND ?"
|
|
|
|
for MEDIAKEY in $(ls ~/.zen/ipfs/.$IPFSNODEID/KEY); do
|
|
echo "MEDIAKEY=$MEDIAKEY"
|
|
## Do I have this IPNS key?
|
|
ISKEY=$(ipfs key list -l | grep "$MEDIAKEY.4FRIENDS" | cut -d ' ' -f 2)
|
|
echo "ISKEY=$ISKEY"
|
|
## Is there any key already from swarm for that MEDIAKEY
|
|
PREVKEY=$(ls ~/.zen/ipfs_swarm/.12D*/KEY/$MEDIAKEY/*/$G1PUB/ 2>/dev/null)
|
|
echo "PREVKEY=$ISKEY"
|
|
## A key is found in my swam
|
|
if [[ $PREVKEY ]]; then
|
|
echo "I found a MEDIAKEY for $MEDIAKEY : $PREVKEY"
|
|
## Do I have it localy available?
|
|
if [[ ! $ISKEY ]]; then
|
|
echo "don't have it local..."
|
|
# decrypting PREVKEY to my ipfs keystore
|
|
$MY_PATH/tools/natools.py decrypt -f pubsec -k "$HOME/.zen/secret.dunikey" -i "~/.zen/ipfs_swarm/.12D*/KEY/$MEDIAKEY/*/$G1PUB/$PREVKEY" -o "$HOME/.ipfs/keystore/${PREVKEY%.*}"
|
|
## Checking if ipfs deamon have it
|
|
ISKEY=$(ipfs key list -l | grep "$MEDIAKEY.4FRIENDS" | cut -d ' ' -f 2)
|
|
echo ".ipfs/keystore/${PREVKEY%.*} added..."
|
|
[[ ! $ISKEY ]] && echo "Restarting ipfs..." && sudo service ipfs restart
|
|
fi
|
|
## Station is Not spreading swarm key... just getting it back.
|
|
continue
|
|
fi
|
|
|
|
echo "~/.zen/ipfs/.$IPFSNODEID/KEY/$MEDIAKEY/$G1PUB/$FRIEND/"
|
|
## No swarm or local MEDIAKEY, we are the first $MEDIAKEY creator in the swarm
|
|
[[ ! $ISKEY ]] && echo "Creating $MEDIAKEY.4FRIENDS IPNS key" && IPNSKEY=$(ipfs key gen "$MEDIAKEY.4FRIENDS") && IPNSKEYFILE=$(~/.zen/astrXbian/zen/tools/give_me_keystore_filename.py "$MEDIAKEY.4FRIENDS")
|
|
|
|
## Sending encrypted MEDIAKEY to my swarm (sign if you want more security, but code ipfs signature verification is enough and better)
|
|
if [[ ! -d ~/.zen/ipfs/.$IPFSNODEID/KEY/$MEDIAKEY/$G1PUB/$FRIEND/ ]]; then
|
|
echo "MEDIAKEY $MEDIAKEY is missing to my $FRIEND"
|
|
mkdir -p "~/.zen/ipfs/.$IPFSNODEID/KEY/$MEDIAKEY/$G1PUB/$FRIEND/"
|
|
$MY_PATH/tools/natools.py encrypt -p $FRIEND -i "~/.ipfs/keystore/$IPNSKEYFILE" -o "~/.zen/ipfs/.$IPFSNODEID/KEY/$MEDIAKEY/$G1PUB/$FRIEND/$IPNSKEYFILE.encrypt"
|
|
echo "Spreading ~/.zen/ipfs/.$IPFSNODEID/KEY/$MEDIAKEY/$G1PUB/$FRIEND/$IPNSKEYFILE.encrypt"
|
|
fi
|
|
|
|
## TODO : CHECK FOR DISAPEARED FRIENDS.
|
|
read
|
|
|
|
done
|
|
read
|
|
|
|
done
|