ssb install ssb init
This commit is contained in:
parent
5c42294052
commit
a734b2918c
|
@ -37,10 +37,46 @@ scuttlebutt() {
|
|||
[[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb
|
||||
|
||||
# Create config (TODO: adapt if public Pub or Local Node)
|
||||
# TODO: Create unique hostname in swarm !! uidna
|
||||
|
||||
nodename=$(cat /etc/hostname)
|
||||
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
|
||||
cat > ~/.ssb/config <<EOF
|
||||
|
@ -65,25 +101,27 @@ scuttlebutt() {
|
|||
}
|
||||
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
|
||||
|
||||
# Store current user as sudo will change it
|
||||
currentUser=$USER
|
||||
[[ -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
|
||||
sed -i s/_/\$/g ~/.zen/run-ssb_$nodename.sh
|
||||
chmod 755 ~/.zen/run-ssb_$nodename.sh
|
||||
|
||||
sudo mv /tmp/ssb.service /etc/systemd/system/ssb.service
|
||||
~/.zen/run-ssb_$nodename.sh &
|
||||
|
||||
# Reload, Enable and start SSB Service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable ssb.service
|
||||
sudo systemctl restart ssb.service
|
||||
|
||||
sudo systemctl status ssb.service
|
||||
echo '
|
||||
__ _ _ _ _
|
||||
(_ |_|_)\ /|_|_) o._ o_|_
|
||||
__)|_| \ \/ |_| \ || || |_ ... SCUTTLEBUTT ... OK
|
||||
|
||||
'
|
||||
|
||||
}
|
||||
|
||||
|
|
133
zen/ssb_INIT.sh
133
zen/ssb_INIT.sh
|
@ -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 == "" ]] && echo "ERROR missing IPFSNODEID" && exit 1
|
||||
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/G1SSB
|
||||
ipfsnodeid=$(ipfs id -f='<id>\n')
|
||||
[[ $ipfsnodeid == "" ]] && echo "ERROR missing IPFS Node id !!" && exit 1
|
||||
########################################################################
|
||||
# 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)
|
||||
|
||||
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
|
||||
[[ $ssbpub == "" ]] && echo "ERROR ssb-server NOT running !!" && exit 1
|
||||
########################################################################
|
||||
[[ ! -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 "
|
||||
$ssbpub
|
||||
_____ _____ _
|
||||
(_ | /\ |_)||_| \
|
||||
oooooooo__) |/--\| \||_|_/ !!!!!!!!!!!!!!
|
||||
|
||||
/\ |_ _ _|_
|
||||
/--\|_)(_)|_||_ G1SSB Identity
|
||||
|
||||
"
|
||||
|
||||
## PUBLISH ABOUT MESSAGE
|
||||
##############################################
|
||||
# CREATE G1 wallet QRCode
|
||||
qrcodefile=~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.qrcode.png
|
||||
qrencode -s 5 -o $qrcodefile "$NODE_G1PUBKEY"
|
||||
# IMAGE of G1 wallet QRCode
|
||||
qrcodefile=~/.zen/ipfs/.$ipfsnodeid/G1SSB/_g1.qrcode.png
|
||||
qrencode -s 5 -o $qrcodefile "$g1pub"
|
||||
|
||||
# Publish G1 Wallet PUBKEY QRCode to SSB
|
||||
# Prepare QRCode File for SSB
|
||||
name=${qrcodefile##*/}
|
||||
id="$(sbotc blobs.add < $qrcodefile)"
|
||||
type="$(file -b --mime-type $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
|
||||
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
|
||||
echo "$ssbpub" > ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_ssb.whoami
|
||||
echo "$NODE_G1PUBKEY" > ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.pubkey
|
||||
echo "$ssbpub" > ~/.zen/ipfs/.$ipfsnodeid/G1SSB/_ssb.whoami
|
||||
echo "$g1pub" > ~/.zen/ipfs/.$ipfsnodeid/G1SSB/_g1.pubkey
|
||||
|
||||
IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1)
|
||||
NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS)
|
||||
|
||||
|
||||
|
||||
echo "
|
||||
$ssbpub
|
||||
|
||||
|
||||
/\ |_ _ _|_
|
||||
/--\|_)(_)|_||_ message published
|
||||
$g1pub
|
||||
|
||||
$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)
|
||||
"
|
||||
|
|
|
@ -28,11 +28,11 @@ PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday
|
|||
##############################################
|
||||
# NODE ENVIRONEMENT DETECTION
|
||||
##############################################
|
||||
IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
ipfsnodeid=$(ipfs id -f='<id>\n')
|
||||
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
|
||||
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
echo "G1SSB Wallet: $NODE_G1PUBKEY
|
||||
IPFS: $IPFSNODEID
|
||||
g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
echo "G1SSB Wallet: $g1pub
|
||||
IPFS: $ipfsnodeid
|
||||
__ __ _ _ _______
|
||||
_______ _ __ | \/ | / \ | |/ / ____|
|
||||
|_ / _ \ '_ \ | |\/| | / _ \ | ' /| _|
|
||||
|
@ -122,16 +122,16 @@ $AA $ZEN Zen
|
|||
# COPY ZENTAG TO LOCAL ~/.zen/tag
|
||||
echo "$AA" > ~/.zen/tag/${AAH}/_tag.uid # Nom du ZenTAG
|
||||
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 "$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
|
||||
|
||||
########################################################################
|
||||
# Create IPNS publishing key ${AA}.key
|
||||
# =====================================
|
||||
# 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)
|
||||
########################################################################
|
||||
[[ ! -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
|
||||
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
|
||||
$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
|
||||
echo "
|
||||
|
||||
|
@ -174,7 +174,7 @@ echo "
|
|||
echo "$PASSENGERNAME" > ~/.zen/tag/${AAH}/_passenger.filename
|
||||
|
||||
# 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
|
||||
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
|
||||
|
@ -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
|
||||
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
|
||||
|
||||
# INDEXING ZenTag to SWARM
|
||||
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/TAG/${J}
|
||||
echo "${AA}" > ~/.zen/ipfs/.$IPFSNODEID/TAG/${J}/_tag.uid
|
||||
mkdir -p ~/.zen/ipfs/.$ipfsnodeid/TAG/${J}
|
||||
echo "${AA}" > ~/.zen/ipfs/.$ipfsnodeid/TAG/${J}/_tag.uid
|
||||
IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1)
|
||||
NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS)
|
||||
|
||||
|
@ -255,7 +256,7 @@ echo "
|
|||
$I
|
||||
|
||||
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
|
||||
qrencode -s 5 -o ~/.zen/tag/${AAH}/_QRCODE.write.png "BJ:${BB}#${J}"
|
||||
|
||||
echo "DONE !!
|
||||
echo "CREATED !!
|
||||
${AA}"
|
||||
|
||||
|
||||
########################################################################
|
||||
# SBOT PUBLISH
|
||||
########################################################################
|
||||
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
|
||||
rm -f ~/.ipfs/keystore/*.key
|
||||
rm -Rf ~/.zen/tag/*
|
||||
rm -Rf ~/.zen/ipfs/.$IPFSNODEID/TAG
|
||||
rm -Rf ~/.zen/ipfs/.$ipfsnodeid/TAG
|
||||
##################################################################"
|
||||
########################################################################
|
||||
exit 0
|
||||
|
|
|
@ -34,9 +34,9 @@ QWRITE="$2"
|
|||
##############################################
|
||||
# NODE ENVIRONEMENT DETECTION
|
||||
##############################################
|
||||
IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
ipfsnodeid=$(ipfs id -f='<id>\n')
|
||||
[[ ! -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
|
||||
|
|
Loading…
Reference in New Issue