2022-11-02 13:31:39 +01:00
|
|
|
#!/bin/bash
|
|
|
|
################################################################################
|
|
|
|
# Author: Fred (support@qo-op.com)
|
|
|
|
# Version: 0.1
|
|
|
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
|
|
|
################################################################################
|
2022-11-02 15:00:01 +01:00
|
|
|
# PUBLISHING IPNS SWARM MAP
|
2022-11-02 13:31:39 +01:00
|
|
|
# This script scan Swarm API layer from official bootstraps
|
|
|
|
# Then publish map of json DApp data
|
2022-11-02 15:00:01 +01:00
|
|
|
#
|
2022-11-02 14:06:26 +01:00
|
|
|
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
2022-11-02 13:31:39 +01:00
|
|
|
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
2022-11-02 14:06:26 +01:00
|
|
|
myIP=$(hostname -I | awk '{print $1}' | head -n 1)
|
|
|
|
[[ ! $myIP ]] && myIP="127.0.1.1"
|
|
|
|
|
|
|
|
PORT=12345
|
|
|
|
|
|
|
|
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); ## $USER running ipfs
|
|
|
|
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
|
|
|
|
2022-11-02 15:00:01 +01:00
|
|
|
ncrunning=$(ps auxf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
|
|
|
[[ $ncrunning ]] && echo "(≖‿‿≖) - API Server Already Running - (≖‿‿≖) " && exit 1
|
2022-11-02 13:31:39 +01:00
|
|
|
|
2022-11-02 15:00:01 +01:00
|
|
|
while true; do
|
|
|
|
start=`date +%s`
|
|
|
|
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
|
|
|
|
do
|
|
|
|
ipfsnodeid=${bootnode##*/}
|
|
|
|
mkdir -p ~/.zen/tmp/swarm/$ipfsnodeid
|
|
|
|
echo "IPFS get /ipns/$ipfsnodeid"
|
|
|
|
[[ $YOU ]] && echo "http://$myIP:8080/ipns/${ipfsnodeid} ($YOU)" && ipfs --timeout 12s get -o ~/.zen/tmp/swarm/$ipfsnodeid /ipns/$ipfsnodeid
|
|
|
|
## [[ ! -s ~/.zen/tmp/swarm/$ipfsnodeid/index.json ]] && echo "$LIBRA/ipns/${ipfsnodeid}" && curl -m 6 -so ~/.zen/tmp/swarm/$ipfsnodeid/index.json "$LIBRA/ipns/${ipfsnodeid}"
|
2022-11-02 14:06:26 +01:00
|
|
|
|
2022-11-02 15:00:01 +01:00
|
|
|
echo "Updated : ~/.zen/tmp/swarm/$ipfsnodeid"
|
|
|
|
ls ~/.zen/tmp/swarm/$ipfsnodeid
|
|
|
|
done
|
2022-11-02 14:06:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2022-11-02 15:00:01 +01:00
|
|
|
ls ~/.zen/tmp/swarm/
|
2022-11-02 17:23:12 +01:00
|
|
|
ROUTING=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 )
|
2022-11-02 15:00:01 +01:00
|
|
|
echo "SELF PUBLISHING SWARM STATUS"
|
|
|
|
ipfs name publish --allow-offline /ipfs/$ROUTING
|
2022-11-02 14:06:26 +01:00
|
|
|
|
2022-11-02 15:00:01 +01:00
|
|
|
HTTPCORS="HTTP/1.1 200 OK
|
2022-11-02 15:12:13 +01:00
|
|
|
Access-Control-Allow-Origin: \*
|
2022-11-02 14:06:26 +01:00
|
|
|
Access-Control-Allow-Credentials: true
|
|
|
|
Access-Control-Allow-Methods: GET
|
|
|
|
Server: Astroport.ONE
|
|
|
|
Content-Type: application/json; charset=UTF-8
|
|
|
|
|
|
|
|
{
|
2022-11-02 15:30:43 +01:00
|
|
|
\"created\" : \"${MOATS}\",
|
2022-11-02 15:34:44 +01:00
|
|
|
\"hostname\" : \"$(hostname)\",
|
|
|
|
\"myIP\" : \"${myIP}\",
|
2022-11-02 15:00:01 +01:00
|
|
|
\"ipfsnodeid\" : \"${IPFSNODEID}\",
|
|
|
|
\"url\" : \"http://${myIP}:8080/ipns/${IPFSNODEID}\"
|
2022-11-02 14:06:26 +01:00
|
|
|
}
|
|
|
|
"
|
2022-11-02 15:00:01 +01:00
|
|
|
# BLOCKING COMMAND
|
|
|
|
echo '(◕‿‿◕) http://'$myIP:'12345 READY (◕‿‿◕)'
|
|
|
|
echo "$HTTPCORS" | nc -l -p 12345 -q 1 > /dev/null 2>&1
|
|
|
|
#### 12345 NETWORK MAP TOKEN
|
|
|
|
end=`date +%s`
|
|
|
|
echo '(#__#) WAITING TIME was '`expr $end - $start`' seconds.'
|
|
|
|
echo '(^‿‿^) 12345 TOKEN '${MOATS}' CONSUMED (^‿‿^)'
|
|
|
|
done
|
2022-11-02 14:06:26 +01:00
|
|
|
|
2022-11-02 15:00:01 +01:00
|
|
|
exit 0
|