astrXbian/zen/gchange_IPFS_swarm.sh

104 lines
4.9 KiB
Bash
Raw Normal View History

2020-12-12 01:26:39 +01:00
#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 2020.12.03
# 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##*/}"
2021-01-31 16:22:46 +01:00
# CLEAN "A_my_swarm.txt" and "A_swarm_map.txt"
rm -f ~/.zen/A_my_swarm.txt && touch ~/.zen/A_my_swarm.txt
rm -f ~/.zen/A_swarm_map.txt && touch ~/.zen/A_swarm_map.txt
2020-12-12 01:26:39 +01:00
########################################################################
# ENVIRONEMENT DETECTION + IPFS ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_info
########################################################################
IPFSNODEID=$(ipfs id -f='<id>\n')
[[ $IPFSNODEID == "" ]] && echo "ERROR missing IPFS Node id !! IPFS is not installed !?" && exit 1
isIPFSRunning=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d ' ' -f 1)
[[ ! $isIPFSRunning ]] && echo "ERROR! ipfs daemon is not running. EXIT" && exit 1
########################################################################
# Force Strict #swarm0 !!?
# ipfs bootstrap rm --all
liking_me_count=0
friend_of_mine_count=0
2021-01-31 17:55:24 +01:00
echo $(date)
2020-12-12 01:26:39 +01:00
########################################################################
# Let's look for Friends and "IPFS swarm connect" with them
########################################################################
# 1. Get Gchange "liking_me" people list
for liking_me in $(~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey stars | jq -r '.likes[].issuer');
2020-12-12 01:26:39 +01:00
do
2021-01-31 16:22:46 +01:00
[[ "$liking_me" == "" || "$liking_me" == "$G1PUB" ]] && continue
# DE TOUS CEUX QUI M'AIMENT JE VAIS LIRE LES MESSAGES pour collecter leurs ipfstryme vers ~/.zen/A_swarm_map.txt
2020-12-25 18:10:39 +01:00
# SI JE SUIS LEUR AMI EN RETOUR, je conserve leur ID dans ~/.zen/A_my_swarm.txt
2020-12-12 01:26:39 +01:00
# Check if my like is reverse
2020-12-25 18:10:39 +01:00
liking_me_count=$((liking_me_count+1))
echo ">>>>>> CHECKING my friend n° $liking_me_count"
echo "READING 'ipfstryme' message from $liking_me"
for peerline in $(~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey read -n300 -j | jq -r --arg friendKEY "$liking_me" '.[] | select(.pubkey == $friendKEY)' | jq 'select(.title == "ipfstryme")' | jq -r '.content');
2020-12-12 01:26:39 +01:00
do
2021-01-31 17:34:46 +01:00
echo ""
2020-12-25 19:52:08 +01:00
echo "PEERLINE: $peerline"
2021-01-31 16:22:46 +01:00
# REFERSH A_swarm_map.txt
2020-12-25 18:10:39 +01:00
echo $peerline >> ~/.zen/A_swarm_map.txt
2021-01-31 15:28:00 +01:00
cat ~/.zen/A_swarm_map.txt | sort | uniq > /tmp/A_swarm_map.txt
2020-12-25 19:52:08 +01:00
cp -f /tmp/A_swarm_map.txt ~/.zen/A_swarm_map.txt
2021-01-31 16:22:46 +01:00
# GET $ipfsnodeid AND $whoisg1 FROM $peerline
2020-12-25 18:43:39 +01:00
ipfsnodeid=$(echo "$peerline" | awk -F '/' '{print $8}')
2020-12-25 19:39:25 +01:00
[[ "$ipfsnodeid" == "" ]] && continue
2020-12-25 18:10:39 +01:00
whoisg1=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $ipfsnodeid)
2021-01-31 16:22:46 +01:00
echo "AM I FRIEND WITH MY FRIEND FRIEND $whoisg1 ?"
friend_of_mine=$(~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey stars -p $whoisg1 | jq -r '.yours.pseudo'); # must contains my XZUID
2021-01-12 15:55:34 +01:00
if [[ "$friend_of_mine" != "null" ]]; then
2021-01-31 16:22:46 +01:00
echo "YEAH IT IS ALSO MY FRIEND !!!"
2021-01-31 17:34:46 +01:00
# SHOULD WE CHECK ~/.zen/ipfs/.${IPFSNODEID}/FRIENDS/$whoisg1/tryme.addr ?
# COUNT UNIQ FRIENDS
2021-01-31 17:55:24 +01:00
if [[ ! $(grep "$peerline" ~/.zen/A_my_swarm.txt) ]]
then
friend_of_mine_count=$((friend_of_mine_count+1))
echo "$peerline" >> ~/.zen/A_my_swarm.txt
else
echo "ALREADY RECORDED FRIEND"
fi
2020-12-25 18:40:20 +01:00
# REMOVING OLD ipfstryme MESSAGES
2020-12-25 18:10:39 +01:00
nbmessage=0
2021-03-12 00:44:00 +01:00
for messageid in $(~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey read -n300 -j | jq -r --arg friendKEY "$whoisg1" '.[] | select(.pubkey == $friendKEY)' | jq 'select(.title == "ipfstryme")' | jq -r '.id')
2020-12-25 18:10:39 +01:00
do
nbmessage=$((nbmessage+1))
[ $nbmessage -gt 1 ] && echo "Delete $nbmessage OLD 'ipfstryme' messages from $whoisg1" && ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey delete -i $messageid
2020-12-25 18:10:39 +01:00
sleep 0.5
done
2021-01-31 17:55:24 +01:00
[[ $nbmessage == 0 ]] && echo "NO ipfstryme MESSAGE FROM THIS FRIEND $whoisg1"
# SEND MESSAGE ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey send -d $whoisg1 -t 'Astroport' -m 'Aucun message de ta part https://copylaradio.com'"
2021-01-31 17:34:46 +01:00
else
2021-01-31 17:55:24 +01:00
echo "NOT FULL FRIEND $ipfsnodeid / $whoisg1"
2021-01-31 17:34:46 +01:00
# SEND ME A MESSAGE TO DECIDE WHAT TO DO ?
# SEND MESSAGE ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey send -d $whoisg1 -t 'Astroport' -m 'Rejoins mon #Swarm0 https://copylaradio.com'"
2020-12-25 18:10:39 +01:00
fi
2020-12-12 01:26:39 +01:00
done;
2020-12-25 18:10:39 +01:00
2020-12-12 01:26:39 +01:00
echo "__________________________________________"
2020-12-25 18:10:39 +01:00
2020-12-12 01:26:39 +01:00
done
2020-12-25 20:27:04 +01:00
# UNIQ file
2021-01-31 15:28:00 +01:00
cat ~/.zen/A_my_swarm.txt | sort | uniq > /tmp/A_my_swarm.txt
2020-12-25 20:27:04 +01:00
cp -f /tmp/A_my_swarm.txt ~/.zen/A_my_swarm.txt
2020-12-12 01:26:39 +01:00
echo "####################################################
I have $friend_of_mine_count friends amoung $liking_me_count liking me people
__________________________________________
My actual #SWARM0"
ipfs swarm peers
2021-01-31 17:55:24 +01:00
echo $(date)
2020-12-25 18:10:39 +01:00
2021-02-13 14:25:50 +01:00
# ipfs SWARM shaping
~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh