Compare commits

..

6 Commits

Author SHA1 Message Date
qo-op 09b4bc65e2 Merge branch 'dev-joss' of josselinchevalay/ssb-g1like into master
je ne sais pas fusionner... @poka...
2020-05-10 20:33:32 +02:00
qo-op 2206ed5378 Send LOVE now (1 DUG1 = 100 LOVE) 2020-04-29 22:34:05 +02:00
qo-op 04c6b7d2c4 Open file with xed 2020-04-29 22:19:35 +02:00
qo-op 3519cb29e9 grep -rl UDĞ1 ./ | xargs sed -i s/UDĞ1/LOVE/g 2020-04-29 22:12:17 +02:00
qo-op 0e76a649bc backup .ssb 2020-03-30 03:33:30 +02:00
qo-op fb3d19fb8d extended install 2020-03-30 03:02:29 +02:00
3 changed files with 166 additions and 98 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,92 +7,142 @@
# [@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 ! ########################################################################
# INSTALL silkaj sbotc MY_PATH="`dirname \"$0\"`" # relative
# PREVENT DOUBLE PAYEMENT MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
############################################################################################ 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 "INSTALL silkaj" echo '**************************************************************
__ ___
(_ | | |/ /\ |
__) _|_ |_ |\ /--\ \_|
#Libre Money Layer
'
mkdir -p ~/.zen
sudo apt update || true sudo apt update || true
sudo apt install python3-pip python3-setuptools python3-wheel -y && pip3 install silkaj --user sudo apt install build-essential -y
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
if [[ ! $(which sbot) ]]; then # Install ScuttleButt
echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
__ _ ___ ___ _ _ ___ ___
(_ / | | | | | |_ |_) | | | |
__) \_ |_| | | |_ |_ |_) |_| | |
#Libre Social Layer
Is it a 24/24 Pub?
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 npm install sodium-native ssb-backlinks ssb-ws ssb-links ssb-query ssb-secret-blob ssb-private
npm install -g ssb-server npm install -g ssb-server
nodename=$(cat /etc/hostname).local # LOCAL
echo "SSB Node Hostname (default $nodename)?" ####### BACKUP .ssb to ~/.ssb_$USER && CREATE ~/.ssb_astroport
read EXTERNAL # If exists backup ~/.ssb to ~/.ssb_$USER SSB (one time only !)
[[ $EXTERNAL == "" ]] && EXTERNAL=$nodename [[ -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
mkdir -p ~/.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": "private", "transform": "shs", "port": 8008, "host": "127.0.0.1" } { "scope": ["public", "local", "device"], "host": "0.0.0.0", "port": 8989, "transform": "shs", "http": true }
] ]
}, },
"outgoing": { "outgoing": {
"net": [ "net": [{ "transform": "shs" }]
{
"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 --host $EXTERNAL ssb-server start
echo _! > ~/.zen/ssb.pid
done done
EOF EOF
chmod 755 ~/run-ssb-PUB_$EXTERNAL.sh # REPLACE _ with $
~/run-ssb-PUB_$EXTERNAL.sh & sed -i s/_/\$/g ~/.zen/run-ssb_server.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
# INSTALL sbotc # LOCAL NODE
if [[ ! $(which sbotc) ]]; then if [[ $extension == $nodename ]] ; 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
echo '
_ ___ _ _ _
|_) /\ | / |_| \ / / \ |_) |/
| /--\ | \_ | | \/\/ \_/ | \ |\
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
########################################################################################### ###########################################################################################
####################### 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
@ -115,48 +165,62 @@ else
mkdir -p ~/.ssb mkdir -p ~/.ssb
echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!" echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!"
echo "CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION" echo "
__ __ __ _
/__ /| (_ (_ |_)
\_| | __) __) |_)
CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION"
read salt read salt
[[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit [[ $salt != "" ]] && echo "PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit 1
# INSTALL Cargo if [[ "$salt" == "" && "$pepper" == "" ]]; then
if [[ ! $(which cargo) ]]; then echo '
curl https://sh.rustup.rs -sSf | sh ._ _ ._ _ ._ _ _ ._ o _
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 ./key_create_dunikey.py "$salt" "$pepper" python3 $MY_PATH/key_create_dunikey.py "$salt" "$pepper"
mv ./.secret.dunikey ~/.ssb/secret.dunikey mv $MY_PATH/.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,7 +111,8 @@ SSB_PATH=~/.ssb/ docker-compose build
create your dunikey create your dunikey
``` ```
SSB_PATH=~/.ssb/ docker-compose up -d tip # only you need to run tiping part SSB_PATH=~/your-copy-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
minimumAmountPerLikeInUD="0.1" minimumAmountPerLikeInLOVE="10"
############################################################################################ ############################################################################################
@ -129,7 +129,7 @@ else
exit 1 exit 1
fi fi
printf "You have ${bold}%s UDĞ1${normal} on your Duniter Ğ1 wallet.\n\n" "$balance" printf "You have ${bold}%s LOVE${normal} on your Duniter Ğ1 wallet.\n\n" "$((balance * 100))"
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 UDĞ1 do you want to send per each like you gave? (minimum is ${bold}%s UDĞ1${normal}) " "$minimumAmountPerLikeInUD" printf "How many LOVE do you want to send per each like you gave? (minimum is ${bold}%s LOVE${normal}) " "$((minimumAmountPerLikeInLOVE))"
read a read a
printf "\n" printf "\n"
if [[ -z $a ]] if [[ -z $a ]]
then then
amountPerLikeInUD=$minimumAmountPerLikeInUD amountPerLikeInUD=$(bc -l <<< "scale=2; $minimumAmountPerLikeInLOVE / 100")
else else
amountPerLikeInUD=$a amountPerLikeInUD=$(bc -l <<< "scale=2; $a / 100")
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 >= $minimumAmountPerLikeInUD" | bc -l) )) amountPerLike_is_enough=$(( $(echo "$amountPerLikeInUD >= $minimumAmountPerLikeInLOVE" | 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 UDĞ1 to send all transactions.\n\n" printf "You don't have enough LOVE 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 UDĞ1${normal} are needed.\n\n" "$amountGiven" printf "${bold}%s LOVE${normal} are needed.\n\n" "$((amountGiven * 100))"
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 UDĞ1.\n\n" $minimumAmountPerLikeInUD printf "Minimum amount per like is %s LOVE.\n\n" $minimumAmountPerLikeInLOVE
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 UDĞ1${normal}\n\n" "$maxAmountPerLike" printf "Maximum amount per like possible: ${bold}%s LOVE${normal}\n\n" "$((maxAmountPerLike * 100))"
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 UDĞ1${normal} will be given.\n\n" "$amountGiven" printf "${bold}%s LOVE${normal} will be given.\n\n" "$((amountGiven * 100))"
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 UDĞ1${normal}\n\n" "$newBalance" printf "After sending transactions, your new balance will be ${bold}%s LOVE${normal}\n\n" "$((newBalance * 100))"
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 UDĞ1 " "$tipAmount") newLine+=$(printf "| %s LOVE " "$((tipAmount * 100))")
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 UDĞ1${normal} sent to %s!\n\n" "$tipAmount" "$author_name" printf "\n${bold}%s LOVE${normal} sent to %s!\n\n" "$((tipAmount * 100))" "$author_name"
fi fi
(( authorNum++ )) (( authorNum++ ))
@ -473,7 +473,7 @@ then
fi fi
fi fi
printf "\n%s UDĞ1 sent to %s butts!\n\n" "$amountGiven" "${#likesNbPerAuthor[@]}" printf "\n%s LOVE sent to %s butts!\n\n" "$((amountGiven * 100))" "${#likesNbPerAuthor[@]}"
# Let's publicly thank everyone! # Let's publicly thank everyone!
#echo -e "${tyPosts[$n]}" #echo -e "${tyPosts[$n]}"
@ -512,6 +512,9 @@ 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