Compare commits

..

1 Commits

Author SHA1 Message Date
josselinchevalay 36e3803182 Mettre à jour 'readme.md' 2020-04-09 11:53:26 +02:00
3 changed files with 94 additions and 162 deletions

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
######################################################################## ################################################################################
# Authors: # Authors:
# [@cel](@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519) # [@cel](@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519)
# [@Fred](@9BbJwPDjcyIqrOUPNn0nJZBduWdIrpMk3Cjz5MP361s=.ed25519) # [@Fred](@9BbJwPDjcyIqrOUPNn0nJZBduWdIrpMk3Cjz5MP361s=.ed25519)
@ -7,142 +7,92 @@
# [@poka]() # [@poka]()
# Version: 1.0.1 # Version: 1.0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
######################################################################## ###########################################################################################
######################################################################## # ADD G1 Layer 10 LOVE to message writer you like !
MY_PATH="`dirname \"$0\"`" # relative # INSTALL silkaj sbotc
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized # PREVENT DOUBLE PAYEMENT
ME="${0##*/}" ############################################################################################
echo '
######################################################################## # INSTALL requirements
# \\/// [[ ! $(which base58) ]] && sudo apt install build-essential base58 -y
# qo-op
############# '$MY_PATH/$ME'
########################################################################
# SSB-G1-TX :: INSTALL G1 + SSB for sending G1 Tip on SSB likes
########################################################################
'
# INSTALL Silkaj, CLI for Duniter # INSTALL Silkaj, CLI for Duniter
if [[ ! $(which silkaj) ]]; then if [[ ! $(which silkaj) ]]; then
echo '************************************************************** echo "INSTALL silkaj"
__ ___
(_ | | |/ /\ |
__) _|_ |_ |\ /--\ \_|
#Libre Money Layer
'
mkdir -p ~/.zen
sudo apt update || true sudo apt update || true
sudo apt install build-essential -y sudo apt install python3-pip python3-setuptools python3-wheel -y && pip3 install silkaj --user
sudo pip3 install base58
sudo apt install python3-pip python3-setuptools python3-wheel -y
pip3 install silkaj --user
echo 'PATH=$PATH:.local/bin' >> ~/.bashrc && source ~/.bashrc echo 'PATH=$PATH:.local/bin' >> ~/.bashrc && source ~/.bashrc
fi fi
# Install ScuttleButt # Install ScuttleButt
echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
__ _ ___ ___ _ _ ___ ___
(_ / | | | | | |_ |_) | | | |
__) \_ |_| | | |_ |_ |_) |_| | |
#Libre Social Layer
Is it a 24/24 Pub? if [[ ! $(which sbot) ]]; then
Yes/No: y? (Default No)'
read ssb_yes
nodename=$(cat /etc/hostname)
extension=$(echo $nodename | cut -d '.' -f 2)
[[ $extension == $nodename ]] && nodename=$nodename.local
if [[ ! $(which sbot) && "$ssb_yes" == "y" ]]; then
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
source ~/.bashrc 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 nvm install --lts
sudo apt install libtool autoconf -y sudo apt install libtool autoconf -y
npm install sodium-native ssb-backlinks ssb-ws ssb-links ssb-query ssb-secret-blob ssb-private npm install sodium-native ssb-backlinks
npm install -g ssb-server npm install -g ssb-server
nodename=$(cat /etc/hostname).local
echo "SSB Node Hostname (default $nodename)?"
read EXTERNAL
[[ $EXTERNAL == "" ]] && EXTERNAL=$nodename
# LOCAL mkdir -p ~/.ssb
####### BACKUP .ssb to ~/.ssb_$USER && CREATE ~/.ssb_astroport
# If exists backup ~/.ssb to ~/.ssb_$USER SSB (one time only !)
[[ -d ~/.ssb_$USER ]] && echo "BACKUP already existing... ~/.ssb_$USER !!! Manual check please..." && exit 1
[[ -d ~/.ssb ]] && [[ ! -d ~/.ssb_$USER ]] && mv ~/.ssb ~/.ssb_$USER
# CREATE ~/.ssb_astroport
[[ ! -d ~/.ssb_astroport ]] && mkdir -p ~/.ssb_astroport
# if exists, keep ~/.ssb_$USER/secret*
[[ ! -f ~/.ssb_astroport/secret ]] && [[ -f ~/.ssb_$USER/secret ]] && cp -f ~/.ssb_$USER/secret* ~/.ssb_astroport/
# Symlink ~/.ssb -> ~/.ssb_astroport
[[ -L ~/.ssb ]] && rm ~/.ssb
[[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb
cat > ~/.ssb/config <<EOF cat > ~/.ssb/config <<EOF
{ {
"connections": { "connections": {
"incoming": { "incoming": {
"net": [ "net": [
{ "scope": "public", "host": "0.0.0.0", "external": ["$nodename"], "transform": "shs", "port": 8008 } {
], "scope": "public", "external": ["$EXTERNAL"], "transform": "shs", "port": 8008
"ws": [ },
{ "scope": ["public", "local", "device"], "host": "0.0.0.0", "port": 8989, "transform": "shs", "http": true } { "scope": "private", "transform": "shs", "port": 8008, "host": "127.0.0.1" }
] ]
}, },
"outgoing": { "outgoing": {
"net": [{ "transform": "shs" }] "net": [
{
"transform": "shs"
}
]
} }
} }
} }
EOF EOF
cat > ~/.zen/run-ssb_server.sh <<EOF
cat > ~/run-ssb-PUB_$EXTERNAL.sh <<EOF
#!/bin/bash #!/bin/bash
echo _$ > ~/.zen/ssb.pid.bash
while true; do while true; do
ssb-server start ssb-server start --host $EXTERNAL
echo _! > ~/.zen/ssb.pid
done done
EOF EOF
# REPLACE _ with $ chmod 755 ~/run-ssb-PUB_$EXTERNAL.sh
sed -i s/_/\$/g ~/.zen/run-ssb_server.sh ~/run-ssb-PUB_$EXTERNAL.sh &
chmod 755 ~/.zen/run-ssb_server.sh
# INSTALL sbotc for CLI API
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
fi fi
# LOCAL NODE # INSTALL sbotc
if [[ $extension == $nodename ]] ; then if [[ ! $(which sbotc) ]]; then
sudo apt install libsodium-dev jq -y
echo ' git clone https://git.scuttlebot.io/%25133ulDgs%2FoC1DXjoK04vDFy6DgVBB%2FZok15YJmuhD5Q%3D.sha256 sbotc
_ ___ _ _ _ cd sbotc
|_) /\ | / |_| \ / / \ |_) |/ make
| /--\ | \_ | | \/\/ \_/ | \ |\ sudo make install
Install Patchwork...
'
wget -s https://github.com/ssbc/patchwork/releases/download/v3.17.6/ssb-patchwork_3.17.6_amd64.deb > /tmp/
sudo dpkg -i /tmp/ssb-patchwork_3.17.6_amd64.deb
fi fi
########################################################################################### ###########################################################################################
####################### G1 SSB ACCOUNT MANAGER ############################################ ####################### G1 SSB ACCOUNT MANAGER ############################################
########################################################################################### ###########################################################################################
# If user already has an SSB account, we generate Duniter secret key from SSB secret key # If user already has an SSB account, we generate Duniter secret key from SSB secret key
if [[ -f ~/.ssb/secret ]]; then if [[ -f ~/.ssb/secret ]]; then
@ -165,62 +115,48 @@ else
mkdir -p ~/.ssb mkdir -p ~/.ssb
echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!" echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!"
echo " echo "CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION"
__ __ __ _
/__ /| (_ (_ |_)
\_| | __) __) |_)
CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION"
read salt read salt
[[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit 1 [[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit
if [[ "$salt" == "" && "$pepper" == "" ]]; then # INSTALL Cargo
echo ' if [[ ! $(which cargo) ]]; then
._ _ ._ _ ._ _ _ ._ o _ curl https://sh.rustup.rs -sSf | sh
| | | | | (/_ | | | (_) | | | (_ PATH=$PATH:~/.cargo/env
source $HOME/.cargo/env
passphrase generator...'
# INSTALL Cargo
if [[ ! $(which cargo) ]]; then
curl https://sh.rustup.rs -sSf | sh
PATH=$PATH:~/.cargo/env
source $HOME/.cargo/env
fi
# 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 WORDS
salt="${makeyarray[0]} ${makeyarray[1]} ${makeyarray[2]} ${makeyarray[3]} ${makeyarray[4]} ${makeyarray[5]}"
# PASS (=PEPPER) 3 WORDS
pepper="${makeyarray[6]} ${makeyarray[7]} ${makeyarray[8]}"
fi
echo "........."
echo "REMEMBER YOUR CREDENTIALS: $salt / $pepper"
fi fi
# 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 "REMEMBER YOUR CREDENTIALS: $salt / $pepper"
# CREATE ~/.ssb/secret.dunikey # CREATE ~/.ssb/secret.dunikey
python3 $MY_PATH/key_create_dunikey.py "$salt" "$pepper" python3 ./key_create_dunikey.py "$salt" "$pepper"
mv $MY_PATH/.secret.dunikey ~/.ssb/secret.dunikey mv ./.secret.dunikey ~/.ssb/secret.dunikey
# CREATE SSB secret # CREATE SSB secret
pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2) pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2) priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
ssbpub=$(echo $pub | base58 -d | base64) ssbpub=$(echo $pub | base58 -d | base64)
ssbpriv=$(echo $priv | base58 -d | base64) ssbpriv=$(echo $priv | base58 -d | base64)
cat > ~/.ssb/secret <<EOF cat > ~/.ssb/secret <<EOF
# This secret is related to your G1Wallet - https://cesium.app # This secret is related to your G1Wallet - https://cesium.app
# silkaj balance $pub # silkaj balance $pub

View File

@ -111,8 +111,7 @@ SSB_PATH=~/.ssb/ docker-compose build
create your dunikey create your dunikey
``` ```
SSB_PATH=~/your-copy-ssb/ docker-compose up -d tip # only you need to run tiping part SSB_PATH=~/.ssb/ docker-compose up -d tip # only you need to run tiping part
SSB_PATH=~/your-copy-ssb/ docker-compose up -d # if you need to run all platform
``` ```
run main tip script run main tip script

35
tip.sh
View File

@ -26,7 +26,7 @@ debugMsgMode=0
# If you don't want to wait # If you don't want to wait
readable=1 readable=1
minimumAmountPerLikeInLOVE="10" minimumAmountPerLikeInUD="0.1"
############################################################################################ ############################################################################################
@ -129,7 +129,7 @@ else
exit 1 exit 1
fi fi
printf "You have ${bold}%s LOVE${normal} on your Duniter Ğ1 wallet.\n\n" "$((balance * 100))" printf "You have ${bold}%s UDĞ1${normal} on your Duniter Ğ1 wallet.\n\n" "$balance"
if [[ $readable -eq 1 ]]; then sleep 2; fi if [[ $readable -eq 1 ]]; then sleep 2; fi
printf "Want to show your appreciation of your fellow butts' posts while helping spreading awareness about libre currencies?\n\n" printf "Want to show your appreciation of your fellow butts' posts while helping spreading awareness about libre currencies?\n\n"
if [[ $readable -eq 1 ]]; then sleep 3; fi if [[ $readable -eq 1 ]]; then sleep 3; fi
@ -274,22 +274,22 @@ tx_are_possible=0
while [[ $tx_are_possible -eq 0 ]] while [[ $tx_are_possible -eq 0 ]]
do do
printf "How many LOVE do you want to send per each like you gave? (minimum is ${bold}%s LOVE${normal}) " "$((minimumAmountPerLikeInLOVE))" printf "How many UDĞ1 do you want to send per each like you gave? (minimum is ${bold}%s UDĞ1${normal}) " "$minimumAmountPerLikeInUD"
read a read a
printf "\n" printf "\n"
if [[ -z $a ]] if [[ -z $a ]]
then then
amountPerLikeInUD=$(bc -l <<< "scale=2; $minimumAmountPerLikeInLOVE / 100") amountPerLikeInUD=$minimumAmountPerLikeInUD
else else
amountPerLikeInUD=$(bc -l <<< "scale=2; $a / 100") amountPerLikeInUD=$a
fi fi
amountGiven=$(echo "$totalLikesGiven * $amountPerLikeInUD" | bc -l) amountGiven=$(echo "$totalLikesGiven * $amountPerLikeInUD" | bc -l)
has_enough_money=$(( $(echo "$amountGiven <= $balance" | bc -l) )) has_enough_money=$(( $(echo "$amountGiven <= $balance" | bc -l) ))
amountPerLike_is_enough=$(( $(echo "$amountPerLikeInUD >= $minimumAmountPerLikeInLOVE" | bc -l) )) amountPerLike_is_enough=$(( $(echo "$amountPerLikeInUD >= $minimumAmountPerLikeInUD" | bc -l) ))
tx_are_possible=$(( $has_enough_money && $amountPerLike_is_enough )) tx_are_possible=$(( $has_enough_money && $amountPerLike_is_enough ))
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
@ -298,13 +298,13 @@ do
if [[ $has_enough_money -eq 0 ]] ; then if [[ $has_enough_money -eq 0 ]] ; then
printf "You don't have enough LOVE to send all transactions.\n\n" printf "You don't have enough UDĞ1 to send all transactions.\n\n"
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
printf "${bold}%s LOVE${normal} are needed.\n\n" "$((amountGiven * 100))" printf "${bold}%s UDĞ1${normal} are needed.\n\n" "$amountGiven"
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
elif [[ $amountPerLike_is_enough -eq 0 ]] ; then elif [[ $amountPerLike_is_enough -eq 0 ]] ; then
printf "Minimum amount per like is %s LOVE.\n\n" $minimumAmountPerLikeInLOVE printf "Minimum amount per like is %s UDĞ1.\n\n" $minimumAmountPerLikeInUD
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
fi fi
@ -312,13 +312,13 @@ do
printf "Try again with a different amount per like.\n\n" printf "Try again with a different amount per like.\n\n"
maxAmountPerLike=$(awk -vp=$balance -vq=$totalLikesGiven 'BEGIN{printf "%.2f" ,p / q}') maxAmountPerLike=$(awk -vp=$balance -vq=$totalLikesGiven 'BEGIN{printf "%.2f" ,p / q}')
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
printf "Maximum amount per like possible: ${bold}%s LOVE${normal}\n\n" "$((maxAmountPerLike * 100))" printf "Maximum amount per like possible: ${bold}%s UDĞ1${normal}\n\n" "$maxAmountPerLike"
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
else else
newBalance=$(echo "$balance - $amountGiven" | bc -l) newBalance=$(echo "$balance - $amountGiven" | bc -l)
printf "${bold}%s LOVE${normal} will be given.\n\n" "$((amountGiven * 100))" printf "${bold}%s UDĞ1${normal} will be given.\n\n" "$amountGiven"
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
printf "After sending transactions, your new balance will be ${bold}%s LOVE${normal}\n\n" "$((newBalance * 100))" printf "After sending transactions, your new balance will be ${bold}%s UDĞ1${normal}\n\n" "$newBalance"
if [[ $readable -eq 1 ]]; then sleep 1; fi if [[ $readable -eq 1 ]]; then sleep 1; fi
printf "Press ENTER to continue: " && read printf "Press ENTER to continue: " && read
printf "\n" printf "\n"
@ -410,7 +410,7 @@ do
done done
newLine+=$(printf "| %s LOVE " "$((tipAmount * 100))") newLine+=$(printf "| %s UDĞ1 " "$tipAmount")
newLine+="|\n" newLine+="|\n"
@ -451,7 +451,7 @@ do
#printf '%s\n' "silkaj -af --file ~/.ssb/secret.dunikey tx --output $g1_author --amountUD $tipAmount --comment "Thx for your cool posts on ScuttleButt" #printf '%s\n' "silkaj -af --file ~/.ssb/secret.dunikey tx --output $g1_author --amountUD $tipAmount --comment "Thx for your cool posts on ScuttleButt"
silkaj -p "$duniter_server" -af --file ~/.ssb/secret.dunikey tx --output $g1_author --amountUD $tipAmount --comment "Thx for your cool posts on ScuttleButt" -y 2>/dev/null silkaj -p "$duniter_server" -af --file ~/.ssb/secret.dunikey tx --output $g1_author --amountUD $tipAmount --comment "Thx for your cool posts on ScuttleButt" -y 2>/dev/null
printf "\n${bold}%s LOVE${normal} sent to %s!\n\n" "$((tipAmount * 100))" "$author_name" printf "\n${bold}%s UDĞ1${normal} sent to %s!\n\n" "$tipAmount" "$author_name"
fi fi
(( authorNum++ )) (( authorNum++ ))
@ -473,7 +473,7 @@ then
fi fi
fi fi
printf "\n%s LOVE sent to %s butts!\n\n" "$((amountGiven * 100))" "${#likesNbPerAuthor[@]}" printf "\n%s UDĞ1 sent to %s butts!\n\n" "$amountGiven" "${#likesNbPerAuthor[@]}"
# Let's publicly thank everyone! # Let's publicly thank everyone!
#echo -e "${tyPosts[$n]}" #echo -e "${tyPosts[$n]}"
@ -512,9 +512,6 @@ then
printf "It's a file.\n\n" printf "It's a file.\n\n"
if [[ $readable -eq 1 ]]; then sleep 2; fi if [[ $readable -eq 1 ]]; then sleep 2; fi
printf "It's called $msg_filename.md\n\n" printf "It's called $msg_filename.md\n\n"
# Open file with xed
[[ $(which xed) ]] && xed ~/$msg_filename.md &
else else
printf "It's %s files.\n\n" "${#tyPosts[@]}" printf "It's %s files.\n\n" "${#tyPosts[@]}"
if [[ $readable -eq 1 ]]; then sleep 2; fi if [[ $readable -eq 1 ]]; then sleep 2; fi