aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/ak-cjdns-scanner52
-rwxr-xr-xbin/ak-network37
-rwxr-xr-xbin/ak-peers-get-cjdns2
-rwxr-xr-xbin/ak-peers-get-stellar18
-rwxr-xr-xbin/ak-stellar-get-participants111
-rwxr-xr-xlib/_ak_network315
6 files changed, 348 insertions, 187 deletions
diff --git a/bin/ak-cjdns-scanner b/bin/ak-cjdns-scanner
deleted file mode 100755
index 044670b..0000000
--- a/bin/ak-cjdns-scanner
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash
-#
-# Needs CJDNS tools in your PATH
-#
-# Ref: https://github.com/cjdelisle/cjdns
-#
-which dumpLinks > /dev/null 2>&1
-if [ $? -ne 0 ]
-then
- echo "You need to install cjdns and cjdns-tools"
- exit 1
-fi
-
-which publictoip6 > /dev/null 2>&1
-if [ $? -ne 0 ]
-then
- echo "You need to install cjdns and cjdns-tools"
- exit 1
-fi
-
-TEMPDIR="$(mktemp -d)"
-AK_ZPEERSFILE="$HOME/.arching-kaos/peersFile"
-cd $TEMPDIR
-counter=0
-printf '[' > walk.aknet
-dumpLinks \
- | cut -d ' ' -f 2,4 \
- | sed 's/ /\n/g' \
- | sort \
- | uniq \
- | while read -r ip || [ -n "$ip" ]
-do
- node_info="$(curl \
- --connect-timeout 3 \
- -A 'akd/0.1.0; https://github.com/arching-kaos' \
- "http://[$(publictoip6 $ip)]:8610/v0/node_info" 2>/dev/null | jq -c -M)"
- if [ $? -eq 0 ] && [ $(echo -n "$node_info" | wc -c) -gt 0 ]
- then
- if [ "$counter" -ne "0" ]
- then
- printf ',' >> walk.aknet
- fi
- printf '{"cjdns":{"public_key":"%s","ip":"%s"},"node_info":%s}' \
- "$ip" "`publictoip6 $ip`" "$node_info" >> walk.aknet
- counter="`expr $counter + 1`"
- fi
-done
-printf ']' >> walk.aknet
-
-mv walk.aknet $AK_ZPEERSFILE
-
-rm -rf $TEMPDIR
diff --git a/bin/ak-network b/bin/ak-network
index c506879..26d4e3e 100755
--- a/bin/ak-network
+++ b/bin/ak-network
@@ -1,5 +1,34 @@
#!/bin/bash
-while true
-do
- cat $ZLATEST | nc -lv 127.0.0.1 5050
-done
+##
+## Network tools
+##
+## Usage:
+##
+## -h, --help Prints this help message
+##
+## -s, --scan [ipfs|cjdns|stellar] Scan network(s) for peers
+##
+## -c, --connect [ipfs|cjdns] Connect to network(s)
+##
+## -p, --peers [ipfs|cjdns|stellar] Outputs peers found
+##
+fullprogrampath="$(realpath $0)"
+PROGRAM=$(basename $0)
+descriptionString="AK Nettool"
+
+# At least these
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_script
+source $AK_LIBDIR/_ak_network
+
+# Flags to run
+if [ ! -z $1 ]; then
+ case $1 in
+ -h | --help) _ak_usage; exit;;
+ -s | --scan) _ak_network_scan $2; exit;;
+ -c | --connect) _ak_network_connect $2; exit;;
+ -p | --peers) _ak_network_show_peers $2; exit;;
+ * ) _ak_usage;;
+ esac
+else _ak_usage
+fi
diff --git a/bin/ak-peers-get-cjdns b/bin/ak-peers-get-cjdns
deleted file mode 100755
index dee8af4..0000000
--- a/bin/ak-peers-get-cjdns
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env bash
-cat $AK_ZPEERSFILE | jq \ No newline at end of file
diff --git a/bin/ak-peers-get-stellar b/bin/ak-peers-get-stellar
deleted file mode 100755
index ec9eaa6..0000000
--- a/bin/ak-peers-get-stellar
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/bash
-source $AK_LIBDIR/_ak_ipfs
-stellarParticipants="$AK_WORKDIR/stellar-network-participants"
-stellarParticipantsOnline="$AK_WORKDIR/stellar-network-participants-online"
-(
-printf '['
-counter=0
-cat $stellarParticipantsOnline | while read stellarAddress akConfig
-do
- if [ $counter -ne 0 ]
- then
- printf ','
- fi
- counter=$(( $counter + 1 ))
- printf '{"stellar":{"address":"%s","config":"%s"},"node_info":%s}' "$stellarAddress" "$akConfig" "$(_ak_ipfs_cat /ipns/$akConfig)"
-done
-printf ']'
-) #| jq
diff --git a/bin/ak-stellar-get-participants b/bin/ak-stellar-get-participants
deleted file mode 100755
index 779e9e1..0000000
--- a/bin/ak-stellar-get-participants
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/bin/bash
-PROGRAM="$(basename $0)"
-tempdir=`mktemp -d`
-tempfile="$tempdir/tmp"
-tempaddr="$tempdir/tmpaddr"
-source $AK_LIBDIR/_ak_log
-
-stellarParticipants="$AK_WORKDIR/stellar-network-participants"
-stellarParticipantsOnline="$AK_WORKDIR/stellar-network-participants-online"
-if [ ! -f "$stellarParticipants" ]
-then
- touch $stellarParticipants
-fi
-if [ ! -f "$stellarParticipantsOnline" ]
-then
- touch $stellarParticipantsOnline
-fi
-if [ ! -f "$tempdir" ]
-then
- touch $tempdir
-fi
-if [ ! -f "$tempaddr" ]
-then
- touch $tempaddr
-fi
-
-if [ ! -z $1 ] && [ "$1" == "-l" ] && [ ! -z $2 ]
-then
- limit=$2
-else
- limit=3
-fi
-
-show_ids(){
- i=0
- flag=0
- while [ "$i" -lt "$limit" ]
- do
- test="$(cat $tempfile | jq '.["_embedded"]' | jq .'["records"]' | jq '.['$i']' | jq '.["id"]' | sed -e 's/\"//g')"
- while IFS="" read -r p || [ -n "$p" ]
- do
- if [ "$p" == "$test" ]
- then
- flag=1
- break
- fi
- done < $stellarParticipants
- if [ "$flag" == "0" ]
- then
- echo $test >> $stellarParticipants
- _ak_log_info "Added $test"
- else
- _ak_log_info "$test already there. Skipping..."
- fi
- i="$(expr $i + 1)"
- done
-}
-
-get_next_page(){
- cat $tempfile | grep -1 next | grep https | sed -e 's/^.*https/https/' | sed -e 's/\u0026/\&/g; s/"//g; s/\\//g'
-}
-
-proceed_to_next_page(){
- nextURL="$(get_next_page)"
- curl \
- --connect-timeout 3 \
- "$nextURL" > $tempfile 2>/dev/null
-}
-
-get_asset_holders(){
- curl \
- --connect-timeout 3 \
- https://horizon.stellar.org/accounts\?asset\=ARCHINGKAOS:GB4QVKD6NW3CSNO5TNPARAWNPPXOPSSTKB35XCWB7PUNBIQTK3DVELB2\&limit\=$limit > $tempfile 2>/dev/null
-}
-
-get_asset_holders
-while [ "$(tail -1 $stellarParticipants)" != "null" ]
-do
- show_ids
- proceed_to_next_page
-done
-
-grep G $stellarParticipants > $tempaddr
-cat $tempaddr > $stellarParticipants
-rm $tempfile $tempaddr
-while IFS="" read -r p || [ -n "$p" ]
-do
- flag=0
- test="$(curl \
- --connect-timeout 3 \
- https://horizon.stellar.org/accounts/$p/data/config 2>/dev/null | grep value)"
- if [ "$?" == 0 ]
- then
- addressValuePair="$(printf '%s %s\n' "$p" "$(echo $test | sed -e 's/^.*: "//g; s/"//g' | base64 -d)")"
- while IFS="" read -r x || [ -n "$x" ]
- do
- if [ "$x" == "$addressValuePair" ]
- then
- flag=1
- break
- fi
- done < $stellarParticipantsOnline
- if [ "$flag" == "0" ]
- then
- echo $addressValuePair >> $stellarParticipantsOnline
- _ak_log_info "$p is configured with $(echo $addressValuePair | awk '{ print $2 }'). Added to online participants."
- else
- _ak_log_info "$(echo $addressValuePair | awk '{ print $2 }') is already in $stellarParticipantsOnline. Skipping..."
- fi
- fi
-done < $stellarParticipants
diff --git a/lib/_ak_network b/lib/_ak_network
new file mode 100755
index 0000000..8c40f2b
--- /dev/null
+++ b/lib/_ak_network
@@ -0,0 +1,315 @@
+#!/bin/bash
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_ipfs
+
+cjdnstoolspath="$HOME/cjdns/tools"
+
+_ak_network_cjdns_scanner(){
+ #
+ # Needs CJDNS tools in your PATH
+ #
+ # Ref: https://github.com/cjdelisle/cjdns
+ #
+ which dumpLinks > /dev/null 2>&1
+ if [ $? -ne 0 ]
+ then
+ echo "You need to install cjdns and cjdns-tools"
+ exit 1
+ fi
+
+ which publictoip6 > /dev/null 2>&1
+ if [ $? -ne 0 ]
+ then
+ echo "You need to install cjdns and cjdns-tools"
+ exit 1
+ fi
+
+ TEMPDIR="$(mktemp -d)"
+ AK_ZPEERSFILE="$HOME/.arching-kaos/peersFile"
+ cd $TEMPDIR
+ counter=0
+ printf '[' > walk.aknet
+ dumpLinks \
+ | cut -d ' ' -f 2,4 \
+ | sed 's/ /\n/g' \
+ | sort \
+ | uniq \
+ | while read -r ip || [ -n "$ip" ]
+ do
+ node_info="$(curl \
+ --connect-timeout 3 \
+ -A 'akd/0.1.0; https://github.com/arching-kaos' \
+ "http://[$(publictoip6 $ip)]:8610/v0/node_info" 2>/dev/null | jq -c -M)"
+ if [ $? -eq 0 ] && [ $(echo -n "$node_info" | wc -c) -gt 0 ]
+ then
+ if [ "$counter" -ne "0" ]
+ then
+ printf ',' >> walk.aknet
+ fi
+ if [ ! -n "$node_info" ]
+ then
+ node_info="null"
+ fi
+ printf '{"cjdns":{"public_key":"%s","ip":"%s"},"node_info":%s}' \
+ "$ip" "`publictoip6 $ip`" "$node_info" >> walk.aknet
+ counter="`expr $counter + 1`"
+ fi
+ done
+ printf ']' >> walk.aknet
+
+ mv walk.aknet $AK_ZPEERSFILE
+
+ rm -rf $TEMPDIR
+}
+
+_ak_network_stellar_show_ids(){
+ i=0
+ flag=0
+ while [ "$i" -lt "$limit" ]
+ do
+ test="$(cat $tempfile | jq '.["_embedded"]' | jq .'["records"]' | jq '.['$i']' | jq '.["id"]' | sed -e 's/\"//g')"
+ while IFS="" read -r p || [ -n "$p" ]
+ do
+ if [ "$p" == "$test" ]
+ then
+ flag=1
+ break
+ fi
+ done < $stellarParticipants
+ if [ "$flag" == "0" ]
+ then
+ echo $test >> $stellarParticipants
+ _ak_log_info "Added $test"
+ else
+ _ak_log_info "$test already there. Skipping..."
+ fi
+ i="$(expr $i + 1)"
+ done
+}
+
+_ak_network_stellar_get_next_page(){
+ cat $tempfile | jq -r '._links.next.href'
+ # cat $tempfile | grep -1 next | grep https | sed -e 's/^.*https/https/' | sed -e 's/\u0026/\&/g; s/"//g; s/\\//g'
+}
+
+_ak_network_stellar_proceed_to_next_page(){
+ nextURL="$(_ak_network_stellar_get_next_page)"
+ curl \
+ --connect-timeout 3 \
+ "$nextURL" > $tempfile 2>/dev/null
+}
+
+_ak_network_stellar_get_asset_holders(){
+ if [ ! -z $1 ] && [ $1 -gt 0 ] && [ -n "$1" ]
+ then
+ limit=$1
+ else
+ limit=3
+ fi
+ curl \
+ --connect-timeout 3 \
+ https://horizon.stellar.org/accounts\?asset\=ARCHINGKAOS:GB4QVKD6NW3CSNO5TNPARAWNPPXOPSSTKB35XCWB7PUNBIQTK3DVELB2\&limit\=$limit > $tempfile 2>/dev/null
+}
+
+_ak_network_scan_stellar(){
+ tempdir=`mktemp -d`
+ tempfile="$tempdir/tmp"
+ tempaddr="$tempdir/tmpaddr"
+
+ stellarParticipants="$AK_WORKDIR/stellar-network-participants"
+ stellarParticipantsOnline="$AK_WORKDIR/stellar-network-participants-online"
+ if [ ! -f "$stellarParticipants" ]
+ then
+ touch $stellarParticipants
+ fi
+ if [ ! -f "$stellarParticipantsOnline" ]
+ then
+ touch $stellarParticipantsOnline
+ fi
+ if [ ! -f "$tempdir" ]
+ then
+ touch $tempdir
+ fi
+ if [ ! -f "$tempaddr" ]
+ then
+ touch $tempaddr
+ fi
+
+ if [ ! -z $1 ] && [ "$1" == "-l" ] && [ ! -z $2 ]
+ then
+ limit=$2
+ else
+ limit=3
+ fi
+
+ _ak_network_stellar_get_asset_holders $limit
+ while [ "$(tail -1 $stellarParticipants)" != "null" ]
+ do
+ _ak_network_stellar_show_ids
+ _ak_network_stellar_proceed_to_next_page
+ done
+
+ grep G $stellarParticipants > $tempaddr
+ cat $tempaddr > $stellarParticipants
+ rm $tempfile $tempaddr
+ while IFS="" read -r p || [ -n "$p" ]
+ do
+ flag=0
+ test="$(curl \
+ --connect-timeout 3 \
+ https://horizon.stellar.org/accounts/$p/data/config 2>/dev/null | grep value)"
+ if [ "$?" == 0 ]
+ then
+ addressValuePair="$(printf '%s %s\n' "$p" "$(echo $test | sed -e 's/^.*: "//g; s/"//g' | base64 -d)")"
+ while IFS="" read -r x || [ -n "$x" ]
+ do
+ if [ "$x" == "$addressValuePair" ]
+ then
+ flag=1
+ break
+ fi
+ done < $stellarParticipantsOnline
+ if [ "$flag" == "0" ]
+ then
+ echo $addressValuePair >> $stellarParticipantsOnline
+ _ak_log_info "$p is configured with $(echo $addressValuePair | awk '{ print $2 }'). Added to online participants."
+ else
+ _ak_log_info "$(echo $addressValuePair | awk '{ print $2 }') is already in $stellarParticipantsOnline. Skipping..."
+ fi
+ fi
+ done < $stellarParticipants
+}
+
+_ak_network_scan_ipfs(){
+ _ak_not_implemented _ak_network_scan_ipfs
+}
+
+_ak_network_scan_cjdns(){
+ _ak_network_cjdns_scanner
+}
+
+_ak_network_scan(){
+ if [ ! -z $1 ] && [ -n "$1" ]
+ then
+ case $1 in
+ stellar) _ak_network_scan_stellar; exit;;
+ ipfs) _ak_network_scan_ipfs; exit;;
+ cjdns) _ak_network_scan_cjdns; exit;;
+ * ) _ak_log_error "Unknown network $1";exit 1;;
+ esac
+ else
+ _ak_network_scan_stellar
+ _ak_network_scan_ipfs
+ _ak_network_scan_cjdns
+ fi
+}
+_ak_network_show_peers_stellar(){
+ stellarParticipants="$AK_WORKDIR/stellar-network-participants"
+ stellarParticipantsOnline="$AK_WORKDIR/stellar-network-participants-online"
+ (
+ printf '['
+ counter=0
+ cat $stellarParticipantsOnline | while read stellarAddress akConfig
+ do
+ if [ $counter -ne 0 ]
+ then
+ printf ','
+ fi
+ counter=$(( $counter + 1 ))
+ printf '{"stellar":{"address":"%s","config":"%s"},"node_info":%s}' \
+ "$stellarAddress" \
+ "$akConfig" \
+ "$(_ak_ipfs_cat /ipns/$akConfig)"
+ done
+ printf ']'
+ ) #| jq
+}
+
+_ak_network_show_peers_cjdns(){
+ cat $AK_ZPEERSFILE | jq
+}
+
+_ak_network_show_peers_ipfs(){
+ _ak_not_implemented _ak_network_show_peers_ipfs
+}
+
+
+_ak_network_show_peers(){
+ if [ ! -z $1 ] && [ -n "$1" ]
+ then
+ case $1 in
+ stellar) _ak_network_show_peers_stellar; exit;;
+ cjdns) _ak_network_show_peers_cjdns; exit;;
+ ipfs) _ak_network_show_peers_ipfs; exit;;
+ * ) _ak_log_error "Unknown network $1";exit 1;;
+ esac
+ else
+ (_ak_network_show_peers_stellar; _ak_network_show_peers_cjdns; _ak_network_show_peers_ipfs) | \
+ jq -j | \
+ sed -e 's/]\[/,/g' | \
+ jq
+
+ fi
+
+}
+
+_ak_network_ipfs_connect_bootstrap(){
+ curl -s "https://arching-kaos.net/files/ak_ipfs_bootstrap_peers" | while read peer
+ do
+ _ak_ipfs_swarm_connect "$peer"
+ done
+}
+
+_ak_network_cjdns_connect(){
+ if [ ! -z $1 ] && [ -n "$1" ] && [ -f $1 ]
+ then
+ peersfile="$1"
+ else
+ peersfile="$(mktemp)"
+ tmpon="yes"
+ curl -s "https://arching-kaos.net/files/ak_cjdns_bootstrap_peers" > $peersfile
+ fi
+
+ totalpeers="$(jq '. | length' < $peersfile)"
+ number="0"
+ interface="0"
+
+ while [ $number -lt $totalpeers ]
+ do
+ address="$(jq -r '.['$number'].address' < $peersfile)"
+ login="$(jq -r '.['$number'].login' < $peersfile)"
+ password="$(jq -r '.['$number'].password' < $peersfile)"
+ publicKey="$(jq -r '.['$number'].publicKey' < $peersfile)"
+ peerName="$(jq -r '.['$number'].peerName' < $peersfile)"
+ if [ $(echo $address | grep '\[') ]
+ then
+ interface="1"
+ else
+ interface="0"
+ fi
+ $cjdnstoolspath/cexec 'UDPInterface_beginConnection("'$publicKey'", "'$address'", "'$peerName'", "'$password'", "'$login'", '$interface')'
+ number="$(( $number + 1 ))"
+ done
+ if [ "$tmpon" == "yes" ]
+ then
+ rm $peersfile
+ fi
+}
+
+_ak_network_cjdns_connect_bootstrap(){
+ _ak_network_cjdns_connect
+}
+
+_ak_network_connect(){
+ if [ ! -z $1 ] && [ -n "$1" ]
+ then
+ case $1 in
+ cjdns) _ak_network_cjdns_connect_bootstrap; exit;;
+ ipfs) _ak_network_ipfs_connect_bootstrap; exit;;
+ * ) _ak_log_error "Unknown network $1";exit 1;;
+ esac
+ else
+ _ak_network_cjdns_connect_bootstrap
+ _ak_network_ipfs_connect_bootstrap
+ fi
+}