2020-03-14 22:57:43 +01:00
|
|
|
#!/bin/bash
|
|
|
|
################################################################################
|
|
|
|
# Authors:
|
|
|
|
# [@cel](@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519)
|
|
|
|
# [@Fred](@9BbJwPDjcyIqrOUPNn0nJZBduWdIrpMk3Cjz5MP361s=.ed25519)
|
|
|
|
# [@Boris](@l5nYExWYIgDLV6BYHOJPoI97jIUyTdSm8CTLpQ0XeOg=.ed25519)
|
|
|
|
# [@poka]()
|
|
|
|
# Version: 1.0.1
|
|
|
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
|
|
|
###########################################################################################
|
|
|
|
# ADD G1 Layer 10 LOVE to message writer you like !
|
|
|
|
# INSTALL silkaj sbotc
|
|
|
|
# PREVENT DOUBLE PAYEMENT
|
|
|
|
############################################################################################
|
|
|
|
|
|
|
|
# INSTALL requirements
|
|
|
|
[[ ! $(which base58) ]] && sudo apt install build-essential base58 -y
|
|
|
|
|
2020-03-14 23:22:27 +01:00
|
|
|
# INSTALL Silkaj, CLI for Duniter
|
2020-03-14 22:57:43 +01:00
|
|
|
if [[ ! $(which silkaj) ]]; then
|
|
|
|
echo "INSTALL silkaj"
|
|
|
|
sudo apt update || true
|
|
|
|
sudo apt install python3-pip python3-setuptools python3-wheel -y && pip3 install silkaj --user
|
|
|
|
echo 'PATH=$PATH:.local/bin' >> ~/.bashrc && source ~/.bashrc
|
|
|
|
fi
|
|
|
|
|
2020-03-15 00:33:07 +01:00
|
|
|
# Install ScuttleButt
|
|
|
|
|
|
|
|
if [[ ! $(which sbot) ]]; then
|
|
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
|
|
|
|
source ~/.bashrc
|
|
|
|
export NVM_DIR="$HOME/.nvm"
|
|
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
|
|
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
|
|
|
nvm install --lts
|
|
|
|
sudo apt install libtool autoconf -y
|
|
|
|
npm install sodium-native ssb-backlinks
|
|
|
|
sudo npm install -g ssb-server
|
|
|
|
|
|
|
|
echo "Adresse DNS de votre Pub SSB? hostname.yourdomain.tld"
|
|
|
|
read EXTERNAL
|
|
|
|
|
|
|
|
mkdir -p ~/.ssb
|
|
|
|
cat > ~/.ssb/config <<EOF
|
|
|
|
{
|
|
|
|
"connections": {
|
|
|
|
"incoming": {
|
|
|
|
"net": [
|
|
|
|
{
|
|
|
|
"scope": "public", "external": ["$EXTERNAL"], "transform": "shs", "port": 8008
|
|
|
|
},
|
|
|
|
{ "scope": "private", "transform": "shs", "port": 8008, "host": "127.0.0.1" }
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"outgoing": {
|
|
|
|
"net": [
|
|
|
|
{
|
|
|
|
"transform": "shs"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
cat > ~/run-ssb-PUB_$EXTERNAL.sh <<EOF
|
|
|
|
#!/bin/bash
|
|
|
|
while true; do
|
|
|
|
ssb-server start --host $EXTERNAL
|
|
|
|
done
|
|
|
|
EOF
|
|
|
|
|
|
|
|
chmod 755 ~/run-ssb-PUB_$EXTERNAL.sh
|
|
|
|
~/run-ssb-PUB_$EXTERNAL.sh &
|
|
|
|
fi
|
|
|
|
|
2020-03-14 22:57:43 +01:00
|
|
|
# INSTALL sbotc
|
|
|
|
if [[ ! $(which sbotc) ]]; then
|
|
|
|
sudo apt install libsodium-dev jq -y
|
|
|
|
git clone https://git.scuttlebot.io/%25133ulDgs%2FoC1DXjoK04vDFy6DgVBB%2FZok15YJmuhD5Q%3D.sha256 sbotc
|
|
|
|
cd sbotc
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
###########################################################################################
|
|
|
|
####################### G1 SSB ACCOUNT MANAGER ############################################
|
|
|
|
###########################################################################################
|
|
|
|
|
2020-03-14 23:22:27 +01:00
|
|
|
|
|
|
|
|
|
|
|
# If user already has an SSB account, we generate Duniter secret key from SSB secret key
|
|
|
|
if [[ -f ~/.ssb/secret ]]; then
|
|
|
|
|
|
|
|
ssbpub=$(cat ~/.ssb/secret | grep public\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
|
|
|
|
ssbpriv=$(cat ~/.ssb/secret | grep private\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
|
|
|
|
g1pub=$(echo $ssbpub | base64 -d | base58)
|
|
|
|
g1priv=$(echo $ssbpriv | base64 -d | base58)
|
|
|
|
|
|
|
|
cat > ~/.ssb/secret.dunikey <<EOF
|
|
|
|
Type: PubSec
|
|
|
|
Version: 1
|
|
|
|
pub: $g1pub
|
|
|
|
sec: $g1priv
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
# If user doesn't have an SSB account, we create one
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
mkdir -p ~/.ssb
|
|
|
|
echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!"
|
|
|
|
echo "CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION"
|
|
|
|
read salt
|
|
|
|
[[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit
|
|
|
|
|
|
|
|
# INSTALL Cargo
|
|
|
|
if [[ ! $(which cargo) ]]; then
|
|
|
|
curl https://sh.rustup.rs -sSf | sh
|
|
|
|
PATH=$PATH:~/.cargo/env
|
|
|
|
source $HOME/.cargo/env
|
|
|
|
fi
|
|
|
|
|
2020-03-14 22:57:43 +01:00
|
|
|
# Install DUP-Mnemonic
|
|
|
|
|
|
|
|
if [[ ! $(which dup-mnemonic) ]]; then
|
|
|
|
cd /tmp
|
|
|
|
git clone https://git.duniter.org/tools/dup-mnemonic-rs
|
|
|
|
cd dup-mnemonic-rs
|
|
|
|
cargo build --release
|
|
|
|
sudo cp target/release/dup-mnemonic /usr/local/bin
|
|
|
|
fi
|
|
|
|
|
|
|
|
# GENERATE MNEMONIC KEY: 9 MOTS
|
|
|
|
if [[ $salt == "" ]]; then
|
|
|
|
declare -a makeyarray
|
|
|
|
makeyarray=($(dup-mnemonic -l $lang))
|
|
|
|
# LOGIN (=SALT) 6 MOTS
|
|
|
|
salt="${makeyarray[0]} ${makeyarray[1]} ${makeyarray[2]} ${makeyarray[3]} ${makeyarray[4]} ${makeyarray[5]}"
|
|
|
|
# PASS (=PEPPER) 3 MOTS
|
|
|
|
pepper="${makeyarray[6]} ${makeyarray[7]} ${makeyarray[8]}"
|
|
|
|
fi
|
|
|
|
echo "........."
|
|
|
|
echo "CREDENTIAL: $salt / $pepper"
|
|
|
|
|
|
|
|
# CREATE ~/.ssb/secret.dunikey
|
|
|
|
python3 ./key_create_dunikey.py "$salt" "$pepper"
|
|
|
|
mv ./.secret.dunikey ~/.ssb/secret.dunikey
|
|
|
|
|
2020-03-14 23:22:27 +01:00
|
|
|
# CREATE SSB secret
|
2020-03-14 22:57:43 +01:00
|
|
|
pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
|
|
|
|
priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
|
|
|
|
ssbpub=$(echo $pub | base58 -d | base64)
|
|
|
|
ssbpriv=$(echo $priv | base58 -d | base64)
|
|
|
|
cat > ~/.ssb/secret <<EOF
|
|
|
|
# This secret is related to your G1Wallet - https://cesium.app
|
|
|
|
# silkaj balance $pub
|
|
|
|
# ID (salt): $salt / Pass: $pepper
|
|
|
|
# THIS KEY IS YOURS! REMIND IT AND KEEP IT SAFE AS A REAL WALLET
|
|
|
|
# chmod 400 ~/.zen/secret
|
|
|
|
|
|
|
|
{
|
|
|
|
"curve": "ed25519",
|
|
|
|
"public": "$ssbpub.ed25519",
|
|
|
|
"private": "$ssbpriv.ed25519",
|
|
|
|
"id": "@$ssbpub.ed25519"
|
|
|
|
}
|
|
|
|
|
|
|
|
# WARNING! It's vital that you DO NOT edit OR share your secret name
|
|
|
|
# instead, share your public name
|
|
|
|
# your SSB public name: @$ssbpub.ed25519
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "Installation complete"
|
|
|
|
|
|
|
|
|
|
|
|
exit 0
|
2020-03-14 23:22:27 +01:00
|
|
|
|
|
|
|
|