astrXbian/ISOconfig.sh

276 lines
12 KiB
Bash
Raw Normal View History

2020-12-12 01:26:39 +01:00
#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
2021-01-31 22:51:25 +01:00
# Version: 0.2
2020-12-12 01:26:39 +01:00
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# AUTOMATIC version of interactive 1stRUNconfig.sh
# This script can run from ~/.config/autostart/Astroport_X_config.desktop
2021-01-31 22:51:25 +01:00
# IMPORTANT!!! ipfs MUST BE ALREADY RUNNING
2020-12-12 01:26:39 +01:00
########################################################################
# Create secret key files
# ~/.zen/secret.june
# ~/.zen/secret.dunikey
# ~/.zen/secret.ipfs & /tmp/config.ipfs
# ~/.zen/ipfs.sync
########################################################################
# CHECK INTERNET CONNECTIVITY & git pull !!
[ $(id -u) -eq 0 ] && echo "RUN as root FORBIDDEN. Please run with user: $YOU" && exit 1
2020-12-25 20:11:03 +01:00
rm -f /tmp/A_booting_log.txt
2021-02-18 11:06:30 +01:00
ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` 2> /dev/null && echo "OK" || (echo "NO GATEWAY CONNEXION" && exit 1)
2021-01-31 22:51:25 +01:00
# UPDATE astrXbian code
[[ -d ~/.zen/astrXbian ]] && cd ~/.zen/astrXbian && git pull || exit 1
2020-12-12 01:26:39 +01:00
2021-01-31 22:51:25 +01:00
# CHECK IF CONFIG ALREADY DONE !!
# ~/.zen/ipfs ~/.zen/secret ~/.zen/ipfs.sync
2020-12-12 01:26:39 +01:00
if [[ -f ~/.zen/ipfs.sync ]]; then
2020-12-25 20:11:03 +01:00
echo "CONFIG ALREADY DONE.... logging init in /tmp/A_booting_log.txt"
2020-12-12 01:26:39 +01:00
source ~/.zen/ipfs.sync
2020-12-14 04:40:06 +01:00
2020-12-25 20:11:03 +01:00
# Wait for ipfs to connect to its swarm
sleep 20
~/.zen/astrXbian/zen/gchange_INIT.sh >> /tmp/A_booting_log.txt
sleep 10
~/.zen/astrXbian/zen/gchange_IPFS_swarm.sh >> /tmp/A_booting_log.txt
sleep 10
~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh >> /tmp/A_booting_log.txt
2020-12-12 01:26:39 +01:00
exit 0
fi
########################################################################
########################################################################
echo "CREATING Gchange credentials"
########################################################################
2020-12-12 01:43:01 +01:00
salt="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)"
2020-12-12 01:26:39 +01:00
[[ $salt == "" ]] && echo "ERROR" && exit 1
2020-12-12 01:43:01 +01:00
pepper="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)"
2020-12-12 01:26:39 +01:00
2021-02-20 16:27:09 +01:00
[[ "$USER" != "xbian" ]] && echo "Choisir identifiant? $salt" && read salty && [[ $salty ]] && salt="$salty"
[[ "$USER" != "xbian" ]] && echo "Choisir mot de passe? $pepper" && read peppery && [[ $peppery ]] && pepper="$peppery"
2020-12-12 01:26:39 +01:00
g1_salt="$salt"
g1_pepper="$pepper"
2021-01-31 22:51:25 +01:00
echo "FILLING /tmp/secret.june with ($g1_salt) ($g1_pepper)"
2020-12-12 01:26:39 +01:00
echo "$g1_salt" > /tmp/secret.june
echo "$g1_pepper" >> /tmp/secret.june
########################################################################
########################################################################
2021-01-31 22:51:25 +01:00
echo "CREATING /tmp/secret.dunikey (https://cesium.app WALLET)"
2020-12-12 01:26:39 +01:00
########################################################################
2020-12-12 01:43:01 +01:00
python3 ~/.zen/astrXbian/zen/tools/key_create_dunikey.py "$g1_salt" "$g1_pepper"
2020-12-12 01:26:39 +01:00
g1pub=$(cat /tmp/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
g1sec=$(cat /tmp/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
########################################################################
########################################################################
echo "CREATING /tmp/config.ipfs"
########################################################################
2020-12-12 01:43:01 +01:00
ipfs_ID=$(python3 ~/.zen/astrXbian/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py)
2020-12-12 01:26:39 +01:00
echo $ipfs_ID > /tmp/secret.ipfs && source /tmp/secret.ipfs
[[ $PrivKEY == "" ]] && echo "ERROR" && exit 1
jq -r --arg PeerID "$PeerID" '.Identity.PeerID=$PeerID' ~/.ipfs/config > /tmp/config.tmp
jq -r --arg PrivKEY "$PrivKEY" '.Identity.PrivKey=$PrivKEY' /tmp/config.tmp > /tmp/config.ipfs
rm /tmp/config.tmp
2021-01-31 22:51:25 +01:00
# IPFSNODEID
2020-12-12 01:26:39 +01:00
IPFSNODEID=$PeerID
2021-01-31 22:51:25 +01:00
echo "IPFSNODEID=$IPFSNODEID"
2020-12-12 01:26:39 +01:00
## Declare directory transfered in IPFS
IPFS_sync_directory="$HOME/astroport"
2021-01-31 22:51:25 +01:00
mkdir -p $IPFS_sync_directory
2020-12-12 01:26:39 +01:00
########################################################################
# INSTALL KEYS
########################################################################
2021-01-31 22:51:25 +01:00
echo "INSTALL crypto identity in ~/.zen"
timestamp=$(date -u +%s%N | cut -b1-13)
2020-12-14 21:48:45 +01:00
[[ -f ~/.zen/secret.june ]] && mv ~/.zen/secret.june ~/.zen/secret.june.old.$timestamp
2020-12-12 01:26:39 +01:00
mv /tmp/secret.june ~/.zen/secret.june
2021-02-20 17:34:01 +01:00
chmod 640 ~/.zen/secret.june
2020-12-12 01:26:39 +01:00
2020-12-14 21:48:45 +01:00
[[ -f ~/.zen/secret.dunikey ]] && mv ~/.zen/secret.dunikey ~/.zen/secret.dunikey.old.$timestamp
2020-12-12 01:26:39 +01:00
mv /tmp/secret.dunikey ~/.zen/secret.dunikey
2021-02-20 17:34:01 +01:00
chmod 640 ~/.zen/secret.dunikey
2020-12-12 01:26:39 +01:00
2020-12-14 21:48:45 +01:00
[[ -f ~/.zen/secret.ipfs ]] && mv ~/.zen/secret.ipfs ~/.zen/secret.ipfs.old.$timestamp
2020-12-12 01:26:39 +01:00
mv /tmp/secret.ipfs ~/.zen/secret.ipfs
2021-02-20 17:34:01 +01:00
chmod 640 ~/.zen/secret.ipfs
2020-12-12 01:26:39 +01:00
2020-12-17 21:28:10 +01:00
#[[ -f ~/.ipfs/config ]] && mv ~/.ipfs/config ~/.ipfs/config.old.$timestamp
2020-12-12 01:26:39 +01:00
mv /tmp/config.ipfs ~/.ipfs/config
########################################################################
2021-01-31 22:51:25 +01:00
echo "INIT ~/.zen/ipfs/.${IPFSNODEID} INDEX"
2020-12-12 01:26:39 +01:00
########################################################################
rm -Rf ~/.zen/ipfs
mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/G1SSB
########################################################################
# Give $XZUID to your (gchange friends) to add in Vstream Astroport and access your sharings
# IPNS link to "pastebin list" http://localhost:8181/ipns/$IPNSKEY/xbian/$XZUID
2020-12-12 01:26:39 +01:00
########################################################################
2020-12-15 01:33:05 +01:00
XZUID=$(~/.zen/astrXbian/zen/tools/diceware.sh 1 | xargs)${RANDOM:0:2}$(~/.zen/astrXbian/zen/tools/diceware.sh 1 | xargs)
2021-01-31 22:51:25 +01:00
echo "SETTING GCHANGE+ PROFILE NAME = $XZUID"
2021-02-03 02:05:20 +01:00
mkdir -p ~/.zen/ipfs/xbian/${IPFSNODEID}
2020-12-12 01:26:39 +01:00
echo "$XZUID" > ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid
########################################################################
########################################################################
2021-01-31 22:51:25 +01:00
echo "CREATING GCHANGE+/CESIUM+ PROFILE"
2020-12-12 01:26:39 +01:00
########################################################################
2020-12-25 19:59:42 +01:00
~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://data.gchange.fr" set --name "$XZUID" --avatar "/home/$USER/.zen/astrXbian/logo.png" #GCHANGE+
2021-01-31 22:51:25 +01:00
~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://g1.data.e-is.pro" set --name "$XZUID" --avatar "/home/$USER/.zen/astrXbian/logo.png" #CESIUM+
2020-12-15 17:07:51 +01:00
### REVERT
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://g1.data.e-is.pro" erase
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://data.gchange.fr" erase
2020-12-12 01:26:39 +01:00
########################################################################
########################################################################
2021-01-31 22:51:25 +01:00
echo "BECOME FRIEND with A_boostrap_nodes.txt"
2020-12-12 01:26:39 +01:00
########################################################################
for g1node in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
do
if [[ $g1node != "" ]]; then
2021-01-31 22:51:25 +01:00
echo "LINKING TO BOOTSTRAP NODE : $g1node"
2021-02-24 16:18:34 +01:00
~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://g1.data.e-is.pro" stars -p $g1node -s 5
~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://data.gchange.fr" stars -p $g1node -s 5
2021-01-31 22:51:25 +01:00
### REVERT
2021-02-24 16:18:34 +01:00
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://g1.data.e-is.pro" unstars -p 2jQUH4HfHxdTesjCjvMCx1VJgA5AnpuvrWRq1swfRdsS
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://data.gchange.fr" unstars -p 2jQUH4HfHxdTesjCjvMCx1VJgA5AnpuvrWRq1swfRdsS
fi
done
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-31 22:51:25 +01:00
echo "RESTARTING ipfs"
2020-12-12 01:26:39 +01:00
########################################################################
sudo service ipfs restart
echo ".... WAIT for SWARM to connect ..."
sleep 10
2021-01-31 22:51:25 +01:00
echo ".... ACTUAL SWARM PEERS ..."
2020-12-12 01:26:39 +01:00
ipfs swarm peers
########################################################################
2021-01-31 22:51:25 +01:00
echo 'UPDATING ~/.bashrc'
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-28 23:55:04 +01:00
~/.zen/astrXbian/.install/update_bashrc.sh "$XZUID"
2020-12-12 01:26:39 +01:00
## CREATE RAMDISK permanent
#sudo mkdir /mnt/ramdisk
#sudo mount -t tmpfs -o size=50m tmpfs /mnt/ramdisk
2021-01-31 22:51:25 +01:00
echo "UPGRADING ~/.kodi"
2020-12-26 16:41:51 +01:00
cp -Rf ~/.zen/astrXbian/.install/.kodi ~/
# cp -f ~/.zen/astrXbian/.install/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py \
2021-02-03 03:14:35 +01:00
# ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
2020-12-12 01:26:39 +01:00
2020-12-26 16:41:51 +01:00
echo "Configure .kodi/addons/plugin.video.vstream/resources/sites/astroport.py"
2020-12-12 01:26:39 +01:00
# CREATE xbian IPNSKEY used to publish ~/.zen/ipfs_swarm/xbian (contains all XZUID pastebin files)
ipfs key rm xbian
IPNSKEY=$(ipfs key gen xbian)
2020-12-23 00:53:16 +01:00
sed -i "s/_IPNSKEY_/$IPNSKEY/g" ~/.bashrc
2020-12-12 16:22:49 +01:00
sed -i "s/_PROFIL_/$XZUID/g" ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
sed -i "s/_LOGIN_/$salt/g" ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
sed -i "s/_MDP_/$pepper/g" ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
sed -i "s/_IPFSNODEID_/$IPFSNODEID/g" ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py
2020-12-12 01:26:39 +01:00
2020-12-27 01:03:28 +01:00
#BACKUP source... to restore after Vstream upgrade
cp -f ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py ~/.zen/
2021-02-04 03:17:59 +01:00
# ADD DESKTOP SHORTCUT
[[ "$USER" != "xbian" && -d ~/Bureau ]] && sed "s/_USER_/$USER/g" ~/.zen/astrXbian/.install/astroport.desktop > ~/Bureau/astroport.desktop && chmod +x ~/Bureau/astroport.desktop
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-31 22:51:25 +01:00
echo 'Sending "ipfstryme" message'
2020-12-12 01:26:39 +01:00
########################################################################
2020-12-24 16:29:36 +01:00
~/.zen/astrXbian/zen/tools/add_externIP_to_ipfstryme.sh
2020-12-12 01:26:39 +01:00
2021-01-31 22:51:25 +01:00
########################################################################
echo 'Sending \"ipfstryme\" message to BOOTSTRAP nodes' # Add bootstrap in A_boostrap_nodes.txt
########################################################################
for g1node in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
do
if [[ $g1node != "" ]]; then
2020-12-31 17:12:42 +01:00
echo "SENDING ipfstryme to BOOTSTRAP node : $g1node"
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -n "https://g1.data.le-sou.org" send -d $g1node -t "ipfstryme" -f ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr
~/.zen/astrXbian/zen/jaklis/jaklis.py send -d $g1node -t "ipfstryme" -f ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr
fi
done
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-31 22:51:25 +01:00
echo "Synchronize GCHANGE+ with IPFS SWARM"
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-31 22:51:25 +01:00
~/.zen/astrXbian/zen/gchange_IPFS_swarm.sh
~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh
2020-12-12 01:26:39 +01:00
2021-01-31 22:51:25 +01:00
########################################################################
echo 'Installing Astroport cron_MINUTE'
########################################################################
~/.zen/astrXbian/zen/cron_VRFY.sh
2020-12-12 01:26:39 +01:00
2021-01-31 22:51:25 +01:00
########################################################################
#echo "CHANGE hostname"
########################################################################
2021-01-10 12:32:32 +01:00
#myname=$(hostname)
#sudo sed -i "s/$myname/$XZUID/g" /etc/hostname
#sudo sed -i "s/$myname/$XZUID/g" /etc/hosts
2020-12-12 01:26:39 +01:00
2021-01-31 22:51:25 +01:00
########################################################################
echo "Changing your DNS with https://FFDN.org and https://opennic.org" # Avoid provider restrictions
########################################################################
2020-12-14 01:11:38 +01:00
sudo chattr -i /etc/resolv.conf
sudo cat > /tmp/resolv.conf <<EOF
2020-12-12 01:26:39 +01:00
domain home
search home
2020-12-15 17:07:51 +01:00
nameserver 80.67.169.12
nameserver 80.67.169.40
nameserver 94.247.43.254
nameserver 2001:67c:13e4:1::37
2020-12-12 01:26:39 +01:00
# FFDN.org opennic.org = ns8.he.de + ns5.ru
EOF
2020-12-14 01:11:38 +01:00
sudo mv /tmp/resolv.conf /etc/resolv.conf
2020-12-12 01:26:39 +01:00
sudo chattr +i /etc/resolv.conf
2021-01-31 22:51:25 +01:00
########################################################################
echo "Writing ~/.zen/ipfs.sync" # meaning DONE
########################################################################
2020-12-12 16:51:17 +01:00
echo "IPFS_SYNC_DIR=$IPFS_sync_directory" > ~/.zen/ipfs.sync
2020-12-12 01:26:39 +01:00
2020-12-13 20:16:30 +01:00
# RESIZING / partition
# sudo btrfs filesystem resize max /
2021-01-31 22:51:25 +01:00
########################################################################
echo "Activating ipfs DHT optimisations"
########################################################################
# DHT gossip PUBSUB mode
2020-12-24 17:43:00 +01:00
ipfs config Pubsub.Router gossipsub
# MAXSTORAGE = 1/2 available
availableDiskSize=$(df -P ~/ | awk 'NR>1{sum+=$4}END{print sum}')
diskSize="$((availableDiskSize / 2))"
ipfs config Datastore.StorageMax $diskSize
2021-01-31 22:51:25 +01:00
# Activate Rapid "ipfs p2p"
2020-12-24 17:43:00 +01:00
ipfs config --json Experimental.Libp2pStreamMounting true
ipfs config --json Experimental.P2pHttpProxy true
# EMPTY IPFS BOOTSTRAP - Gchange+ friends sends ipfstryme message ###########
2020-12-24 17:43:00 +01:00
ipfs bootstrap rm --all
2021-01-31 22:51:25 +01:00
2020-12-24 17:43:00 +01:00
# AVOID CONFLICT WITH KODI REMOTE
ipfs config Addresses.Gateway "/ip4/127.0.0.1/tcp/8181"
2020-12-12 01:26:39 +01:00
# RESTRICT $USER NOPASSWD sudo to fail2ban-client ONLY
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/fail2ban-client" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/fail2ban-client')
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-31 22:51:25 +01:00
# echo 'ONLY XBIAN REBOOT NOW...'
2020-12-12 01:26:39 +01:00
########################################################################
2021-01-31 22:51:25 +01:00
[[ "$USER" == "xbian" ]] && sudo reboot
2020-12-12 01:26:39 +01:00
exit 0