ssb install ssb init

This commit is contained in:
qo-op 2020-03-24 01:20:10 +01:00
parent 5c42294052
commit a734b2918c
4 changed files with 116 additions and 128 deletions

View File

@ -37,10 +37,46 @@ scuttlebutt() {
[[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb [[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb
# Create config (TODO: adapt if public Pub or Local Node) # Create config (TODO: adapt if public Pub or Local Node)
# TODO: Create unique hostname in swarm !! uidna
nodename=$(cat /etc/hostname) nodename=$(cat /etc/hostname)
extension=$(echo $nodename | cut -d '.' -f 2) extension=$(echo $nodename | cut -d '.' -f 2)
if [[ $extension != "" ]]; then echo "
_ __ __ _
_ _ .__|_o _ (_ (_ |_)
(_(_)| || |(_| __)__)|_)
_|
$nodename
"
if [[ $extension == "" ]]; then
# LOCAL
cat > ~/.ssb/config <<EOF
{
"connections": {
"incoming": {
"net": [
{ "scope": "public", "host": "0.0.0.0", "external": ["$nodename"], "transform": "shs", "port": 8008 }
]
},
"outgoing": {
"net": [{ "transform": "shs" }]
}
}
}
EOF
cat > ~/.zen/run-ssb_$nodename.sh <<EOF
#!/bin/bash
echo _$ > ~/.zen/ssb.pid.bash
while true; do
ssb-server start 2>dev/null
echo _! > ~/.zen/ssb.pid
done
EOF
else
# PUB # PUB
cat > ~/.ssb/config <<EOF cat > ~/.ssb/config <<EOF
@ -65,25 +101,27 @@ scuttlebutt() {
} }
EOF EOF
cat > ~/.zen/run-ssb_$nodename.sh <<EOF
#!/bin/bash
echo _$ > ~/.zen/ssb.pid.bash
while true; do
ssb-server start --host $nodename 2>dev/null
echo _! > ~/.zen/ssb.pid
done
EOF
fi fi
# Store current user as sudo will change it sed -i s/_/\$/g ~/.zen/run-ssb_$nodename.sh
currentUser=$USER chmod 755 ~/.zen/run-ssb_$nodename.sh
[[ -f /etc/systemd/system/ssb.service ]] && sudo rm -f /etc/systemd/system/ssb.service
# Copy SYSTEMD service to correct location
cp "$BASE_DIR/ssb.service" /tmp/ssb.service
# Copy repplace __USER__ place holder to current user
sed -i "s|__USER__|${currentUser}|g" /tmp/ssb.service
sed -i "s|__SSBSERVER__|ssb-server|g" /tmp/ssb.service
sudo mv /tmp/ssb.service /etc/systemd/system/ssb.service ~/.zen/run-ssb_$nodename.sh &
# Reload, Enable and start SSB Service echo '
sudo systemctl daemon-reload __ _ _ _ _
sudo systemctl enable ssb.service (_ |_|_)\ /|_|_) o._ o_|_
sudo systemctl restart ssb.service __)|_| \ \/ |_| \ || || |_ ... SCUTTLEBUTT ... OK
sudo systemctl status ssb.service '
} }

View File

@ -31,126 +31,75 @@ echo '
######################################################################## ########################################################################
' '
######################################################################## ########################################################################
# ENVIRONEMENT DETECTION + IPFS ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_info # ENVIRONEMENT DETECTION + IPFS ~/.zen/ipfs/.$ipfsnodeid/G1SSB/_info
######################################################################## ########################################################################
IPFSNODEID=$(ipfs id -f='<id>\n') ipfsnodeid=$(ipfs id -f='<id>\n')
[[ $IPFSNODEID == "" ]] && echo "ERROR missing IPFSNODEID" && exit 1 [[ $ipfsnodeid == "" ]] && echo "ERROR missing IPFS Node id !!" && exit 1
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/G1SSB
######################################################################## ########################################################################
# TODO: Create unique hostname in swarm !! uidna
EXTERNAL=$(cat /etc/hostname).local
[[ "$1" == "KILL" ]] && cp -f ~/.ssb/config.save && kill -9 $(cat ~/.zen/ssb.pid.bash) && killall node && echo "
_ _ _ _
| | (_) | |
| | ___| | |
| |/ / | | |
| <| | | |
|_|\_\_|_|_|ed
"
ssbpub=$(sbotc whoami 2>/dev/null | jq -r .id) ssbpub=$(sbotc whoami 2>/dev/null | jq -r .id)
[[ $ssbpub == "" ]] && echo "ERROR ssb-server NOT running !!" && exit 1
if [[ $ssbpub == "" ]]; then ########################################################################
# ssb-server not running
[[ "$1" == "RESET" ]] && rm ~/.ssb # REMOVE BACKUP
[[ -d ~/.ssb.$USER ]] && echo "Backup already exists for $USER. MANUAL CHECK : rm -Rf ~/.ssb.$USER " && exit 1
[[ -d ~/.ssb ]] && mv ~/.ssb ~/.ssb.$USER && rm -Rf ~/.ssb # BACKUP ~/.ssb
mkdir -p ~/.ssb
echo "
_ __ __ _
_ _ .__|_o _ (_ (_ |_)
(_(_)| || |(_| __)__)|_)
_|
$EXTERNAL
"
[[ -f ~/.ssb/config ]] && cp -f ~/.ssb/config ~/.ssb/config.bkp
cat > ~/.ssb/config <<EOF
{
"incoming": {
"net": [{ "port": 8008, "scope": "public", "transform": "shs" }]
},
"outgoing": {
"net": [{ "transform": "shs" }]
}
}
EOF
echo '
__ _ _ _ _
(_ |_|_)\ /|_|_) o._ o_|_
__)|_| \ \/ |_| \ || || |_
'
cat > ~/.zen/run-ssb-PUB_$EXTERNAL.sh <<EOF
#!/bin/bash
echo _$ > ~/.zen/ssb.pid.bash
while true; do
ssb-server start --host $EXTERNAL 2>/tmp/ssb.debug
echo _! > ~/.zen/ssb.pid
done
EOF
[[ $1 == "PROD" ]] && sed -i s/tmp/dev/g ~/.zen/run-ssb-PUB_$EXTERNAL.sh && sed -i sed -i s/ssb\.debug/null/g ~/.zen/run-ssb-PUB_$EXTERNAL.sh # PROD=/dev/null
sed -i s/_/\$/g ~/.zen/run-ssb-PUB_$EXTERNAL.sh
chmod 755 ~/.zen/run-ssb-PUB_$EXTERNAL.sh
~/.zen/run-ssb-PUB_$EXTERNAL.sh &
sleep 5
[[ -f ~/.ssb/secret.dunikey ]] && cp ~/.ssb/secret.dunikey ~/.zen/secret.dunikey.$(date -u +%s%N | cut -b1-13)
ssbpub=$(sbotc whoami 2>/dev/null | jq -r .id)
fi
# secret.dunikey ? NODE_G1PUBKEY
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh [[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
########################################################################
# IPFS Node Identity G1 + SSB
mkdir -p ~/.zen/ipfs/.$ipfsnodeid/G1SSB
echo " echo "
$ssbpub
_____ _____ _ /\ |_ _ _|_
(_ | /\ |_)||_| \ /--\|_)(_)|_||_ G1SSB Identity
oooooooo__) |/--\| \||_|_/ !!!!!!!!!!!!!!
" "
## PUBLISH ABOUT MESSAGE ## PUBLISH ABOUT MESSAGE
############################################## ##############################################
# CREATE G1 wallet QRCode # IMAGE of G1 wallet QRCode
qrcodefile=~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.qrcode.png qrcodefile=~/.zen/ipfs/.$ipfsnodeid/G1SSB/_g1.qrcode.png
qrencode -s 5 -o $qrcodefile "$NODE_G1PUBKEY" qrencode -s 5 -o $qrcodefile "$g1pub"
# Publish G1 Wallet PUBKEY QRCode to SSB # Prepare QRCode File for SSB
name=${qrcodefile##*/} name=${qrcodefile##*/}
id="$(sbotc blobs.add < $qrcodefile)" id="$(sbotc blobs.add < $qrcodefile)"
type="$(file -b --mime-type $qrcodefile)" type="$(file -b --mime-type $qrcodefile)"
size="$(wc -c < $qrcodefile)" size="$(wc -c < $qrcodefile)"
# Publish ABOUT
sbot publish --type about --about $ssbpub --description "Welcome to [Astroport](https://astroport.com) G1SSB/IPFS Station [$IPFSNODEID](http://localhost:8080/ipns/$IPFSNODEID)" --name "$USER@$(cat /etc/hostname)" --image "$id" # Publish ABOUT document
sbot publish --type about --about $ssbpub --description "Welcome to [Astroport](https://astroport.com) G1SSB/IPFS Station [$ipfsnodeid](http://localhost:8080/ipns/$ipfsnodeid)" --name "$USER@$(cat /etc/hostname)" --image "$id"
# Publish QRCode FILE post # Publish QRCode FILE post
sbotc publish '{"type":"post","text":"[G1SSB_Wallet.png]('"$id"')\nUse https://cesium.app to send payment.\nComment your transaction with '"'Zen'"' to order ZenTag...","mentions":[{"link":"'"$id"'","name":"'"$name"'","size":'"$size"',"type":"'"$type"'"}]}' sbotc publish '{"type":"post","text":"[G1SSB_Wallet.png]('"$id"')\nUse https://cesium.app to send payment.\nComment your transaction with '"'Zen'"' to order ZenTag...","mentions":[{"link":"'"$id"'","name":"'"$name"'","size":'"$size"',"type":"'"$type"'"}]}'
# COPY NODE G1SSB ID to IPFS # COPY NODE G1SSB ID to IPFS
echo "$ssbpub" > ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_ssb.whoami echo "$ssbpub" > ~/.zen/ipfs/.$ipfsnodeid/G1SSB/_ssb.whoami
echo "$NODE_G1PUBKEY" > ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.pubkey echo "$g1pub" > ~/.zen/ipfs/.$ipfsnodeid/G1SSB/_g1.pubkey
IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1) IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1)
NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS) NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS)
echo " echo "
$ssbpub
$g1pub
/\ |_ _ _|_
/--\|_)(_)|_||_ message published
$ssbpub ____ _ _ _ __
/ ___/ |___ ___| |__ (_)_ __ / _|___
| | _| / __/ __| |_ \ | | _ \| |_/ __|
| |_| | \__ \__ \ |_) | | | |_) | _\__ \
\____|_|___/___/_ __/ |_| __/|_| |___/
|_|
http://localhost:8080/ipns/$IPFSNODEID/.$IPFSNODEID/G1SSB/ ~/.zen/ipfs/.$ipfsnodeid/G1SSB
INVITATION : $(sbotc invite.create 1) ipfs ls /ipns/$NODEIPNS
_ _ _ _ _
(_)_ ____ _(_) |_ __ _| |_(_) ___ _ __
| | _ \ \ / / | __/ _| | __| |/ _ \| _ \
| | | | \ V /| | || (_| | |_| | (_) | | | |
|_|_| |_|\_/ |_|\__\__|_|\__|_|\___/|_| |_|
$(sbotc invite.create 1)
" "

View File

@ -28,11 +28,11 @@ PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday
############################################## ##############################################
# NODE ENVIRONEMENT DETECTION # NODE ENVIRONEMENT DETECTION
############################################## ##############################################
IPFSNODEID=$(ipfs id -f='<id>\n') ipfsnodeid=$(ipfs id -f='<id>\n')
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh [[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
echo "G1SSB Wallet: $NODE_G1PUBKEY echo "G1SSB Wallet: $g1pub
IPFS: $IPFSNODEID IPFS: $ipfsnodeid
__ __ _ _ _______ __ __ _ _ _______
_______ _ __ | \/ | / \ | |/ / ____| _______ _ __ | \/ | / \ | |/ / ____|
|_ / _ \ '_ \ | |\/| | / _ \ | ' /| _| |_ / _ \ '_ \ | |\/| | / _ \ | ' /| _|
@ -122,16 +122,16 @@ $AA $ZEN Zen
# COPY ZENTAG TO LOCAL ~/.zen/tag # COPY ZENTAG TO LOCAL ~/.zen/tag
echo "$AA" > ~/.zen/tag/${AAH}/_tag.uid # Nom du ZenTAG echo "$AA" > ~/.zen/tag/${AAH}/_tag.uid # Nom du ZenTAG
echo "$ZEN" > ~/.zen/tag/${AAH}/_tag.zen # Tag ZEN amount echo "$ZEN" > ~/.zen/tag/${AAH}/_tag.zen # Tag ZEN amount
echo "${IPFSNODEID}" > ~/.zen/tag/${AAH}/_ipfs.node.creator # NODE IPFS ID echo "${ipfsnodeid}" > ~/.zen/tag/${AAH}/_ipfs.node.creator # NODE IPFS ID
echo "$TXHASH" > ~/.zen/tag/${AAH}/_g1.txhash # HASH G1 TX/IN echo "$TXHASH" > ~/.zen/tag/${AAH}/_g1.txhash # HASH G1 TX/IN
echo "$NODE_G1PUBKEY" > ~/.zen/tag/${AAH}/_g1.node.creator # CREATOR IPFS NODE G1PUBKEY echo "$g1pub" > ~/.zen/tag/${AAH}/_g1.node.creator # CREATOR IPFS NODE G1PUBKEY
echo "$ISSUER" > ~/.zen/tag/${AAH}/_g1.issuer # TX ISSUER G1PUBKEY echo "$ISSUER" > ~/.zen/tag/${AAH}/_g1.issuer # TX ISSUER G1PUBKEY
######################################################################## ########################################################################
# Create IPNS publishing key ${AA}.key # Create IPNS publishing key ${AA}.key
# ===================================== # =====================================
# BB encrypted version for IRL use # BB encrypted version for IRL use
# NODE_G1PUBKEY for current G1SSB Node later access... # g1pub for current G1SSB Node later access...
# Using sha512sum / openssl / natools.py (libsodium) # Using sha512sum / openssl / natools.py (libsodium)
######################################################################## ########################################################################
[[ ! -f ~/.ipfs/keystore/${AA}.key ]] && J=$(ipfs key gen -t rsa -s 2048 ${AA}.key) [[ ! -f ~/.ipfs/keystore/${AA}.key ]] && J=$(ipfs key gen -t rsa -s 2048 ${AA}.key)
@ -140,7 +140,7 @@ echo "$BBH" > ~/.zen/tag/${AAH}/_tag.BB.sha
# BB pgp symetric publishkey # BB pgp symetric publishkey
openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.ipfs/keystore/${AA}.key -out ~/.zen/tag/${AAH}/_ipfs.publishkey.BB.aes openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.ipfs/keystore/${AA}.key -out ~/.zen/tag/${AAH}/_ipfs.publishkey.BB.aes
# GIVE IPFS CREATOR NODE ACCESS TO ZEN TAG # GIVE IPFS CREATOR NODE ACCESS TO ZEN TAG
$MY_PATH/tools/natools.py encrypt -p $NODE_G1PUBKEY -i ~/.ipfs/keystore/${AA}.key -o ~/.zen/tag/${AAH}/_ipfs.publishkey.crypt $MY_PATH/tools/natools.py encrypt -p $g1pub -i ~/.ipfs/keystore/${AA}.key -o ~/.zen/tag/${AAH}/_ipfs.publishkey.crypt
# LOG # LOG
echo " echo "
@ -174,7 +174,7 @@ echo "
echo "$PASSENGERNAME" > ~/.zen/tag/${AAH}/_passenger.filename echo "$PASSENGERNAME" > ~/.zen/tag/${AAH}/_passenger.filename
# G1SSB NODE ACCESS # G1SSB NODE ACCESS
$MY_PATH/tools/natools.py encrypt -p $NODE_G1PUBKEY -i ~/.zen/tag/${AAH}/_passenger.ipfs -o ~/.zen/tag/${AAH}/_passenger.ipfs.crypt $MY_PATH/tools/natools.py encrypt -p $g1pub -i ~/.zen/tag/${AAH}/_passenger.ipfs -o ~/.zen/tag/${AAH}/_passenger.ipfs.crypt
# BB OWNER ACCESS # BB OWNER ACCESS
openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs -out ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs -out ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes
# CLEAN CLEARTEXT IPFS link # CLEAN CLEARTEXT IPFS link
@ -194,8 +194,9 @@ _passenger.ipfs : $IPASSENGER
# # # ###### # # # # # # # # ###### # # # # #
# # # # # # # # # # # # # # # # # # # #
###### #### # # ##### ###### ##### ###### #### # # ##### ###### #####
################################################################## ##################################################################
# Decode _passenger.ipfs with BB Passphrase # DECODE AND READ _passenger.ipfs with BB Passphrase
################################################################## ##################################################################
openssl aes-256-cbc -pbkdf2 -k \"$BB\" -d -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes -out /tmp/_passenger.ipfs openssl aes-256-cbc -pbkdf2 -k \"$BB\" -d -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes -out /tmp/_passenger.ipfs
ipfs get -o /tmp \"/ipfs/$IPASSENGER/$PASSENGERNAME\" && vlc \"/tmp/$PASSENGERNAME\" 2>/dev/null ipfs get -o /tmp \"/ipfs/$IPASSENGER/$PASSENGERNAME\" && vlc \"/tmp/$PASSENGERNAME\" 2>/dev/null
@ -240,8 +241,8 @@ J=$(ipfs name publish -k ${AA}.key --quieter /ipfs/${I})
echo "${J}" > ~/.zen/tag/${AAH}/_ipns echo "${J}" > ~/.zen/tag/${AAH}/_ipns
# INDEXING ZenTag to SWARM # INDEXING ZenTag to SWARM
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/TAG/${J} mkdir -p ~/.zen/ipfs/.$ipfsnodeid/TAG/${J}
echo "${AA}" > ~/.zen/ipfs/.$IPFSNODEID/TAG/${J}/_tag.uid echo "${AA}" > ~/.zen/ipfs/.$ipfsnodeid/TAG/${J}/_tag.uid
IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1) IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1)
NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS) NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS)
@ -255,7 +256,7 @@ echo "
$I $I
ZenTAG : ipfs ls /ipns/$J ZenTAG : ipfs ls /ipns/$J
NODE index : ipfs ls /ipns/$NODEIPNS/.$IPFSNODEID NODE index : ipfs ls /ipns/$NODEIPNS/.$ipfsnodeid
" "
######################################################################## ########################################################################
@ -272,20 +273,20 @@ qrencode -s 5 -o ~/.zen/tag/${AAH}/_QRCODE.read.png "RJ:${AA}#${J}"
# WRITE QRCODE # WRITE QRCODE
qrencode -s 5 -o ~/.zen/tag/${AAH}/_QRCODE.write.png "BJ:${BB}#${J}" qrencode -s 5 -o ~/.zen/tag/${AAH}/_QRCODE.write.png "BJ:${BB}#${J}"
echo "DONE !! echo "CREATED !!
${AA}" ${AA}"
######################################################################## ########################################################################
# SBOT PUBLISH # SBOT PUBLISH
######################################################################## ########################################################################
echo ' echo '
__ _ ____ __ _ ____
(_ |_)/ \| (_ |_)/ \|
__)|_)\_/| __)|_)\_/| POST
' '
sbotc publish '{"type":"post","text":"ZenTAG created"}' sbotc publish '{"type":"post","text":"ZenTAG created : ipfs ls /ipns/$J"}'
######################################################################## ########################################################################
@ -298,7 +299,7 @@ echo "
ipfs pin ls -q --type recursive | xargs ipfs pin rm && ipfs repo gc ipfs pin ls -q --type recursive | xargs ipfs pin rm && ipfs repo gc
rm -f ~/.ipfs/keystore/*.key rm -f ~/.ipfs/keystore/*.key
rm -Rf ~/.zen/tag/* rm -Rf ~/.zen/tag/*
rm -Rf ~/.zen/ipfs/.$IPFSNODEID/TAG rm -Rf ~/.zen/ipfs/.$ipfsnodeid/TAG
##################################################################" ##################################################################"
######################################################################## ########################################################################
exit 0 exit 0

View File

@ -34,9 +34,9 @@ QWRITE="$2"
############################################## ##############################################
# NODE ENVIRONEMENT DETECTION # NODE ENVIRONEMENT DETECTION
############################################## ##############################################
IPFSNODEID=$(ipfs id -f='<id>\n') ipfsnodeid=$(ipfs id -f='<id>\n')
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh [[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
############################################################### ###############################################################
# ZenTag READ Passenger with ZenTag WRITE # ZenTag READ Passenger with ZenTag WRITE