You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
335 lines
15 KiB
335 lines
15 KiB
#!/bin/bash |
|
######################################################################## |
|
# Author: Fred (support@qo-op.com) |
|
# Version: 0.4 |
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) |
|
######################################################################## |
|
# IMPORTANT!!! ipfs MUST BE ALREADY RUNNING |
|
IPFSNODEID=$(ipfs id -f='<id>\n') |
|
[[ ! ${IPFSNODEID} ]] && echo "IPFS MUST BE RUNNING" && exit 1 |
|
######################################################################## |
|
# 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 |
|
|
|
rm -f /tmp/A_booting_log.txt |
|
ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` 2>&1>/dev/null && echo "CONNEXION OK" || exit 1 |
|
|
|
# GIT PULL astrXbian code |
|
mkdir -p ~/.zen/astrXbian && cd ~/.zen/astrXbian && git pull || exit 1 |
|
|
|
# CHECK IF CONFIG ALREADY DONE !! |
|
# ~/.zen/ipfs ~/.zen/secret ~/.zen/ipfs.sync |
|
if [[ -f ~/.zen/ipfs.sync ]]; then |
|
echo "CONFIG ALREADY DONE.... logging init in /tmp/A_booting_log.txt" |
|
source ~/.zen/ipfs.sync |
|
# Wait for IPFS to connect 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 |
|
exit 0 |
|
fi |
|
|
|
|
|
######################################################################## |
|
######################################################################## |
|
echo "CREATING Gchange credentials" |
|
######################################################################## |
|
salt="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)" |
|
[[ $salt == "" ]] && echo "ERROR" && exit 1 |
|
pepper="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)" |
|
XZUID=$(~/.zen/astrXbian/zen/tools/diceware.sh 1 | xargs)${RANDOM:0:2}$(~/.zen/astrXbian/zen/tools/diceware.sh 1 | xargs) |
|
|
|
[[ "$USER" != "xbian" ]] && echo "Modifier identifiant (passphrase 1)? $salt" && read salty && [[ $salty ]] && salt="$salty" |
|
[[ "$USER" != "xbian" ]] && echo "Modifier mot de passe (passphrase 2)? $pepper" && read peppery && [[ $peppery ]] && pepper="$peppery" |
|
# [[ "$USER" != "xbian" ]] && echo "Modifier Pseudo? $XZUID" && read XZUIDy && [[ $XZUIDy ]] && XZUID="$XZUIDy" |
|
|
|
g1_salt="$salt" |
|
g1_pepper="$pepper" |
|
|
|
echo "Creation secret.june avec ($g1_salt) ($g1_pepper)" |
|
echo "$g1_salt" > /tmp/secret.june |
|
echo "$g1_pepper" >> /tmp/secret.june |
|
|
|
######################################################################## |
|
######################################################################## |
|
echo "CREATING /tmp/secret.dunikey (https://cesium.app WALLET)" |
|
######################################################################## |
|
python3 ~/.zen/astrXbian/zen/tools/key_create_dunikey.py "$g1_salt" "$g1_pepper" |
|
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" |
|
######################################################################## |
|
ipfs_ID=$(python3 ~/.zen/astrXbian/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py) |
|
echo $ipfs_ID > /tmp/secret.ipfs && source /tmp/secret.ipfs |
|
[[ $PrivKEY == "" ]] && echo "ERROR CREATING IPFS IDENTITY" && 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 |
|
|
|
# IPFSNODEID |
|
IPFSNODEID=$PeerID |
|
echo "IPFSNODEID=$IPFSNODEID" |
|
|
|
## Declare directory transfered in IPFS |
|
IPFS_sync_directory="$HOME/astroport" |
|
mkdir -p $IPFS_sync_directory |
|
|
|
######################################################################## |
|
# INSTALL KEYS |
|
######################################################################## |
|
echo "INSTALL crypto identity in ~/.zen" |
|
timestamp=$(date -u +%s%N | cut -b1-13) |
|
[[ -f ~/.zen/secret.june ]] && mv ~/.zen/secret.june ~/.zen/secret.june.old.$timestamp |
|
mv /tmp/secret.june ~/.zen/secret.june |
|
chmod 640 ~/.zen/secret.june |
|
|
|
[[ -f ~/.zen/secret.dunikey ]] && mv ~/.zen/secret.dunikey ~/.zen/secret.dunikey.old.$timestamp |
|
mv /tmp/secret.dunikey ~/.zen/secret.dunikey |
|
chmod 640 ~/.zen/secret.dunikey |
|
|
|
[[ -f ~/.zen/secret.ipfs ]] && mv ~/.zen/secret.ipfs ~/.zen/secret.ipfs.old.$timestamp |
|
mv /tmp/secret.ipfs ~/.zen/secret.ipfs |
|
chmod 640 ~/.zen/secret.ipfs |
|
|
|
#[[ -f ~/.ipfs/config ]] && mv ~/.ipfs/config ~/.ipfs/config.old.$timestamp |
|
mv /tmp/config.ipfs ~/.ipfs/config |
|
|
|
|
|
######################################################################## |
|
echo "INIT ~/.zen/ipfs/.${IPFSNODEID} INDEX" |
|
######################################################################## |
|
rm -Rf ~/.zen/ipfs |
|
mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/G1SSB |
|
######################################################################## |
|
# Give $XZUID to your (gchange friends) |
|
######################################################################## |
|
echo "SETTING ASTRXBIAN PROFILE NAME = $XZUID" |
|
echo "$XZUID" > ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid |
|
|
|
######################################################################## |
|
######################################################################## |
|
echo "CREATING GCHANGE+ PROFILE" |
|
######################################################################## |
|
~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" set --name "$XZUID" --avatar "/home/$USER/.zen/astrXbian/logo.png" #GCHANGE+ |
|
echo "CREATING CESIUM+ PROFILE" |
|
######################################################################## |
|
~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://g1.data.e-is.pro" set --name "$XZUID" --avatar "/home/$USER/.zen/astrXbian/logo.png" #CESIUM+ |
|
### DELETE |
|
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://g1.data.e-is.pro" erase |
|
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" erase |
|
|
|
######################################################################## |
|
######################################################################## |
|
echo "BECOME FRIEND with A_boostrap_nodes.txt" |
|
######################################################################## |
|
for bootnode in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments |
|
do |
|
if [[ $bootnode != "" ]]; then |
|
ipfsnodeid=${bootnode##*/} |
|
g1node=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $ipfsnodeid) |
|
echo "SENDING STAR TO BOOTSTRAP NODE : $g1node" |
|
~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" stars -p $g1node -n 1 |
|
### DELETE |
|
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" unstars -p $g1node |
|
fi |
|
done |
|
|
|
######################################################################## |
|
echo "RESTARTING ipfs" |
|
######################################################################## |
|
sudo service ipfs restart |
|
echo ".... WAIT for SWARM to connect ..." |
|
sleep 10 |
|
|
|
echo ".... ACTUAL SWARM PEERS ..." |
|
ipfs swarm peers |
|
|
|
######################################################################## |
|
echo 'UPDATING ~/.bashrc' |
|
######################################################################## |
|
~/.zen/astrXbian/.install/update_bashrc.sh "$XZUID" |
|
|
|
## CREATE RAMDISK permanent |
|
#sudo mkdir /mnt/ramdisk |
|
#sudo mount -t tmpfs -o size=50m tmpfs /mnt/ramdisk |
|
|
|
echo "UPGRADING ~/.kodi" |
|
[[ -e ~/.kodi ]] && mv ~/.kodi ~/.kodi.old |
|
cp -Rf ~/.zen/astrXbian/.install/.kodi ~/ |
|
|
|
echo "Configure .kodi/addons/plugin.video.vstream/resources/sites/astroport.py" |
|
|
|
# CREATE xbian IPNSKEY used to publish ~/.zen/ipfs_swarm/xbian (contains all XZUID pastebin files) |
|
IPNSKEY=$(ipfs key list -l | grep xbian | cut -d ' ' -f 1) |
|
[[ ! $IPNSKEY ]] && IPNSKEY=$(ipfs key gen xbian) |
|
sed -i "s/_IPNSKEY_/$IPNSKEY/g" ~/.bashrc |
|
|
|
## MODIFY astroport.py to match station IDENTITY |
|
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 |
|
|
|
#BACKUP source... to restore after Vstream upgrade |
|
cp -f ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py ~/.zen/ |
|
|
|
# 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 |
|
[[ "$USER" != "xbian" && -d ~/Desktop ]] && sed "s/_USER_/$USER/g" ~/.zen/astrXbian/.install/astroport.desktop > ~/Desktop/astroport.desktop && chmod +x ~/Desktop/astroport.desktop |
|
|
|
######################################################################## |
|
echo 'Sending "ipfstryme" message' |
|
######################################################################## |
|
~/.zen/astrXbian/zen/tools/add_externIP_to_ipfstryme.sh |
|
|
|
######################################################################## |
|
echo 'Sending \"ipfstryme\" message to BOOTSTRAP nodes' # Add bootstrap in A_boostrap_nodes.txt |
|
######################################################################## |
|
for bootnode in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments |
|
do |
|
if [[ $bootnode != "" ]]; then |
|
ipfsnodeid=${bootnode##*/} |
|
g1node=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $ipfsnodeid) |
|
echo "SENDING ipfstryme to BOOTSTRAP node : $g1node" |
|
filelines=$(cat ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr | wc -l) |
|
[[ "$filelines" != "0" ]] && ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" send -d $g1node -t "ipfstryme" -f ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr |
|
fi |
|
done |
|
|
|
######################################################################## |
|
echo "Synchronize GCHANGE+ with IPFS SWARM" |
|
######################################################################## |
|
~/.zen/astrXbian/zen/gchange_IPFS_swarm.sh |
|
~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh |
|
|
|
######################################################################## |
|
echo 'Installing Astroport cron_MINUTE' |
|
######################################################################## |
|
~/.zen/astrXbian/zen/cron_VRFY.sh |
|
|
|
######################################################################## |
|
#echo "CHANGE hostname" |
|
######################################################################## |
|
#myname=$(hostname) |
|
#sudo sed -i "s/$myname/$XZUID/g" /etc/hostname |
|
#sudo sed -i "s/$myname/$XZUID/g" /etc/hosts |
|
|
|
######################################################################## |
|
echo "Install youtube-dl" # Avoid provider restrictions |
|
######################################################################## |
|
~/.zen/astrXbian/.install/youtube-dl.sh |
|
|
|
######################################################################## |
|
echo "Changing your DNS with https://FFDN.org and https://opennic.org" # Avoid provider restrictions |
|
######################################################################## |
|
sudo chattr -i /etc/resolv.conf |
|
sudo cat > /tmp/resolv.conf <<EOF |
|
domain home |
|
search home |
|
nameserver 80.67.169.12 |
|
nameserver 80.67.169.40 |
|
nameserver 94.247.43.254 |
|
nameserver 2001:67c:13e4:1::37 |
|
# FFDN.org opennic.org = ns8.he.de + ns5.ru |
|
EOF |
|
sudo cp /etc/resolv.conf /etc/resolv.conf.backup |
|
sudo mv /tmp/resolv.conf /etc/resolv.conf |
|
sudo chattr +i /etc/resolv.conf |
|
|
|
######################################################################## |
|
echo "Writing ~/.zen/ipfs.sync" # meaning DONE |
|
######################################################################## |
|
echo "IPFS_SYNC_DIR=$IPFS_sync_directory" > ~/.zen/ipfs.sync |
|
|
|
# RESIZING / partition |
|
# sudo btrfs filesystem resize max / |
|
|
|
######################################################################## |
|
echo "Activating ipfs DHT optimisations" |
|
######################################################################## |
|
# DHT gossip PUBSUB mode |
|
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 |
|
# Activate Rapid "ipfs p2p" |
|
ipfs config --json Experimental.Libp2pStreamMounting true |
|
ipfs config --json Experimental.P2pHttpProxy true |
|
|
|
# CREATE IPFS BOOTSTRAP ########### |
|
ipfs bootstrap rm --all |
|
for bootnode in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments |
|
do |
|
## ADD $bootnode TO BOOTSTRAP |
|
ipfs bootstrap add $bootnode |
|
done |
|
|
|
# AVOID CONFLICT WITH KODI REMOTE |
|
ipfs config Addresses.Gateway "/ip4/127.0.0.1/tcp/8181" |
|
|
|
## USED FOR fail2ban-client (DEFCON) |
|
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/fail2ban-client" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/fail2ban-client') |
|
## USED FOR RAMDISK (video live streaming) |
|
echo "$USER ALL=(ALL) NOPASSWD:/bin/mount" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/mount') |
|
echo "$USER ALL=(ALL) NOPASSWD:/bin/umount" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/umount') |
|
## USED FOR SYSTEM UPGRADE |
|
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/apt-get" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/apt-get') |
|
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/apt" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/apt') |
|
## USED FOR "systemctl restart ipfs" |
|
echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl') |
|
|
|
## INSTALL TiddlyWiki |
|
[[ ! -f ~/.zen/ipfs/.${IPFSNODEID}/index.html ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID} && cp ~/.zen/astrXbian/.install/templates/tiddlywiki/index.html ~/.zen/ipfs/.${IPFSNODEID}/index.html |
|
|
|
|
|
######################################################################## |
|
# echo 'ONLY XBIAN REBOOT NOW...' else SHOW CONFIG |
|
######################################################################## |
|
[[ "$USER" == "xbian" ]] && sudo reboot |
|
|
|
echo "Redémarrage des services ipfs & fail2ban..." |
|
sudo service ipfs restart |
|
sudo service fail2ban restart |
|
|
|
echo "Installation complete !! |
|
|
|
======================================================= |
|
BIENVENUE DANS le TestNet Astroport/KODI |
|
======================================================= |
|
|
|
1. INSTALLEZ GCHANGE (Firefox) ou allez sur https://gchange.fr |
|
https://github.com/duniter-gchange/gchange-client/releases/download/v1.2.7/gchange-v1.2.7-extension-firefox.xpi |
|
|
|
Vos passphrases sont dans dans ~/.zen/secret.june |
|
$(cat ~/.zen/secret.june) |
|
|
|
Retrouvez vos amis, et échangez des étoiles avec eux pour créer vos cercles de liaisons amicales. |
|
|
|
2. INSTALLEZ CESIUM (Firefox) ou https://cesium.app |
|
https://github.com/duniter/cesium/releases/download/v1.6.7/cesium-v1.6.7-extension-firefox.xpi |
|
|
|
Utilisez vos passphrases ou le fichier trousseau ~/.zen/secret.duniter pour accéder à votre portefeuille |
|
|
|
3. Ajoutez vos vidéos à votre vidéo club grâce à l'application Astroport/Kodi en lien sur votre bureau. |
|
|
|
========================================================== |
|
Maintenant, vous pouvez redémarrer votre ordinateur |
|
Bienvenue sur le réseau de réseaux d'amis ASTROPORT |
|
========================================================== |
|
--- |
|
Ensemble transformons le monde numérique pour qu'il devienne LIBRE P2P et LEGAL |
|
%Makers rejoignez la [REC] Team : https://copylaradio.com |
|
" |
|
|
|
exit 0
|
|
|