#!/bin/bash ######################################################################## # Author: Fred (support@qo-op.com) # Version: 2020.03.24 # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) ######################################################################## MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized ME="${0##*/}" echo ' ######################################################################## # \\/// # qo-op ############# '$MY_PATH/$ME' ######################################################################## # ex: ./'$ME' # SURVEY SSB contact from "invite" is happening in feed ######################################################################## _ _ _ _ _ (_)_ ____ _(_) |_ __ _| |_(_) ___ _ __ | | _ \ \ / / | __/ _| | __| |/ _ \| _ \ | | | | \ V /| | || (_| | |_| | (_) | | | | |_|_| |_|\_/ |_|\__\__|_|\__|_|\___/|_| |_| contact SURVEY # New Station is joining ASTROPORT !! DETECT in SSB feed messages "type": "contact", "autofollow": true LIKE https://tube.p2p.legal/videos/watch/ef319fdd-caf1-4e03-ba22-91c456e94f73 { "key": "%jVQewn0/ey0tfdvYCjYXJqVivaaZ6NpeUL9xK5QeGTk=.sha256", "value": { "previous": "%ilrZ+8CvMXpu09LWh75Uq37j7lVJnoxTvipyooRSjpg=.sha256", "sequence": 3, "author": "@S2KB1zRQNAuCRs1vW08c+63+0gjI2egDj4pjUUrt+dw=.ed25519", "timestamp": 1585068288462, "hash": "sha256", "content": { "type": "contact", "following": true, "autofollow": true, "contact": "@t/giTDc0EtzdPQGC7iAAzgzVOkFo++XZRvzOOlqgX1c=.ed25519" }, "signature": "kXsFqfBGqZXZApf7UANDYlqnwLXuGdWFbMMofljBOp4dNGc4dAv+P2hzK3XV/jPT8a1u7PHIraJASugR1NCLCw==.sig.ed25519" }, "timestamp": 1585068290213 } ' # CACHE [[ ! -d ~/.zen/ssb_contact ]] && mkdir -p ~/.zen/ssb_contact self=$(sbotc whoami | jq -r .id) || exit 1 g1self=$(echo $self | cut -d '@' -f 2 | cut -d '.' -f 1 | base64 -d | base58) self_name=$(sbotc query.read '{"query":[{"$filter":{"value":{"author": "'"$self"'", "content":{"type":"about", "about": "'"$self"'"}}}}]}' | jq -r .value?.content?.name | grep -v null | tail -n 1) messages=$(sbotc query.read '{"query":[{"$filter":{"value":{"content":{"type":"contact", "contact":"'"$self"'", "autofollow":true}}}}]}') while read -r msg do timestamp=$(printf %s "$msg" | jq .value.timestamp) echo ' _ _ ___ ____ / / \|\ || /\ / | \_\_/| \||/--\\_ | FROM NEW STATION' echo $timestamp author=$(printf %s "$msg" | jq -r .value.author) [[ "$author" == "$self" ]] && echo "Message from myself" && continue g1author=$(printf %s "$msg" | jq -r .value.author | cut -d '@' -f 2 | cut -d '.' -f 1 | base64 -d | base58) # Crypt, ipfs store, send if [[ -f ~/.ipfs/swarm.key ]]; then ipfsnodeid=$(ipfs id -f='\n') mkdir -p ~/.zen/ipfs/.${ipfsnodeid}/CONTACT/${g1author} # PUBLISH swarm.key.crypt to IPFS, so PUB can push new swam.key to our CONTACT file=~/.zen/ipfs/.${ipfsnodeid}/CONTACT/${g1author}/ipfs_swarm.key.crypt $MY_PATH/tools/natools.py encrypt -p ${g1author} -i ~/.ipfs/swarm.key -o ${file} # IPFS Node PUBLISH Adresses so Pub can become bootstrap for ${g1author} ipfs id | jq -r .Addresses[] > ~/.zen/ipfs/.${ipfsnodeid}/Addresses # IPFS Node PUBLISH AgentVersion & repo.stat ipfs id | jq -r .AgentVersion > ~/.zen/ipfs/.${ipfsnodeid}/AgentVersion ipfs repo stat > ~/.zen/ipfs/.${ipfsnodeid}/repo.stat bootstrap=$(cat ~/.zen/ipfs/.${ipfsnodeid}/Addresses | tail -n 1) echo " $author \|/ \|/ \|/ /|\ /|\ /|\ preparing cypher swarmkey ~/.zen/ipfs/.${ipfsnodeid}/CONTACT/${g1author}/ipfs_swarm.key.crypt PUBLISH IPFS http://localhost:8080/ipns/ " ipfs name publish --quieter /ipfs/$(ipfs add -rHq ~/.zen/ipfs | tail -n 1) name=${file##*/} id="$(sbotc blobs.add < "$file")" type="$(file -b --mime-type "$file")" size="$(wc -c < "$file")" echo ' ______ _ _ _ ____ __ _ _ /\ (_ ||_)/ \|_)/ \|_)|__(_\ //\ |_)|\/||/|_\_/ /--\__) || \\_/| \_/| \| __)\/\//--\| \| ||\|_ | message send ' echo "SSB #astroport-swarmkey [$name]($id) TO.SSB_${author} TO.G1_${g1author} +++ FROM.SSB_${self_name} FROM.G1_${g1self} FROM.IPFS_${ipfsnodeid} " sbotc publish '{"type":"post","text":"#astroport-swarmkey = ['"$name"']('"$id"') TO.SSB_'"$author"' TO.G1_'"$g1author"' +++ FROM.SSB_'"$self_name"' FROM.G1_'"$g1self"' FROM.IPFS_'"$ipfsnodeid"'","mentions":[{"link":"'"$id"'","name":"'"$name"'","size":'"$size"',"type":"'"$type"'"}]}' else echo "NO swarm.key here." fi done < <(printf '%s\n' "$messages")