aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2024-06-30 22:39:50 +0300
committerkaotisk <kaotisk@arching-kaos.org>2024-06-30 22:39:50 +0300
commitde53c55383ed07e0b65f69d33f5284a31d791664 (patch)
treef1e426c88a5d0a48ca463eccd21c1d12524d8f3a
parent9531bcdffff4e44e8aadb000f0b577d59a32ea3f (diff)
downloadarching-kaos-tools-de53c55383ed07e0b65f69d33f5284a31d791664.tar.gz
arching-kaos-tools-de53c55383ed07e0b65f69d33f5284a31d791664.tar.bz2
arching-kaos-tools-de53c55383ed07e0b65f69d33f5284a31d791664.zip
Refactoring
-rw-r--r--README4
-rw-r--r--TUTORIAL10
-rwxr-xr-xapi/make_cache.sh2
-rw-r--r--api/routes/getZChain/index.js2
-rwxr-xr-xapi/tests/node_local_chain.sh2
-rw-r--r--api/validators/ZblockValidator/index.js2
-rw-r--r--api/validators/ZchainValidator/index.js2
-rwxr-xr-xbin/ak-config2
-rwxr-xr-xbin/ak-follow102
-rwxr-xr-xbin/ak-following13
-rwxr-xr-xbin/ak-mempool15
-rwxr-xr-xbin/ak-miner-script2
-rwxr-xr-xbin/ak-profile58
-rwxr-xr-xbin/ak-schain28
-rwxr-xr-xbin/ak-schain-latest-cached9
-rwxr-xr-xbin/ak-unfollow30
-rwxr-xr-xbin/ak-zchain10
-rwxr-xr-xlib/_ak_network5
-rwxr-xr-xlib/_ak_schain93
-rwxr-xr-xlib/_ak_zblock2
-rwxr-xr-xlib/_ak_zchain107
-rwxr-xr-xmodules/mixtapes/lib.sh4
-rwxr-xr-xmodules/news/lib.sh8
23 files changed, 379 insertions, 133 deletions
diff --git a/README b/README
index 7ac9332..6b4771a 100644
--- a/README
+++ b/README
@@ -37,7 +37,7 @@ Arching Kaos and using it.
Generic tools:
- `ak` - The tools wrapper
-- `ak enter` - Can be used to crawl zchains.
+- `ak zchain --crawl` - Can be used to crawl zchains.
- `ak zchain --rebase` - Can be used to rebase your zchain to a previous zblock.
- `ak zchain --reset` - Can be used to reset your zchain to zgenesis.
@@ -343,6 +343,6 @@ tools you want.
Example:
``` console
-AK_DEBUG="yes"; ak enter -l 1
+AK_DEBUG="yes"; ak zchain --crawl -l 1
```
diff --git a/TUTORIAL b/TUTORIAL
index c22ba73..a720ef6 100644
--- a/TUTORIAL
+++ b/TUTORIAL
@@ -28,17 +28,17 @@ After setting up your nickname, you can see that addition by crawling your chain
like this:
```console
-$ ak enter
+$ ak zchain --crawl
```
Most of the commands come with a `-h` and/or `--help` flags that will provide
you with details on how to use each command. For example, the help message that
-would appear for `ak enter -h` would look like this:
+would appear for `ak zchain --crawl -h` would look like this:
```
-ak-enter - Crawl an arching kaos chain
+ak zchain --crawl - Crawl an arching kaos chain
======================================
-ak-enter [-N | --no-verify] [-l | --limit <number>] [zblock]
-ak-enter [-N | --no-verify] [-l | --limit <number>] -n <zchain>
+ak zchain --crawl [-N | --no-verify] [-l | --limit <number>] [zblock]
+ak zchain --crawl [-N | --no-verify] [-l | --limit <number>] -n <zchain>
Usage:
--help, -h Print this help and exit
--chain <ipns-link>, -n <ipns-link> Crawl specified chain
diff --git a/api/make_cache.sh b/api/make_cache.sh
index 9745c88..71e80ca 100755
--- a/api/make_cache.sh
+++ b/api/make_cache.sh
@@ -1,5 +1,5 @@
#!/bin/bash
ak-find-latest-mined-sblock > $AK_CACHEDIR/ak-find-latest-mined-sblock.json
-ak-enter > $AK_CACHEDIR/ak-get-chain-minified.json
+ak zchain --crawl > $AK_CACHEDIR/ak-get-chain-minified.json
ak-get-zlatest > $AK_CACHEDIR/ak-get-zlatest.json
diff --git a/api/routes/getZChain/index.js b/api/routes/getZChain/index.js
index d30bb0a..6df2d7f 100644
--- a/api/routes/getZChain/index.js
+++ b/api/routes/getZChain/index.js
@@ -8,7 +8,7 @@ const { spawn } = require('child_process');
*
*/
module.exports = (req, res) => {
- const command = spawn("ak-enter");
+ const command = spawn("ak", ["zchain", "--crawl"]);
response_string = "";
command.stdout.on("data", data => {
response_string = response_string + data;
diff --git a/api/tests/node_local_chain.sh b/api/tests/node_local_chain.sh
index 4ad4c33..d1b87b4 100755
--- a/api/tests/node_local_chain.sh
+++ b/api/tests/node_local_chain.sh
@@ -4,7 +4,7 @@ printf '[%s]\n' "$PROGRAM"
printf "TEST /zchain\n"
printf "\t01:\tComparing API with CLI response..."
API_RESPONSE="$(curl http://127.0.0.1:8610/v0/zchain 2>/dev/null | jq -c -M | sha512sum - | awk '{print $1 }')"
-CMD_RESPONSE="$(ak-enter | jq -c -M | sha512sum - | awk '{ print $1 }')"
+CMD_RESPONSE="$(ak zchain --crawl | jq -c -M | sha512sum - | awk '{ print $1 }')"
if [ "$API_RESPONSE" == "$CMD_RESPONSE" ]
then
printf "\t\t\033[0;32mPASSED\033[0;0m"
diff --git a/api/validators/ZblockValidator/index.js b/api/validators/ZblockValidator/index.js
index 873a971..e3656d6 100644
--- a/api/validators/ZblockValidator/index.js
+++ b/api/validators/ZblockValidator/index.js
@@ -65,7 +65,7 @@ function continuethings(exitcode,sh,res){
*
*/
module.exports = (ch, res) => {
- const command = spawn("ak-enter",[ch]);
+ const command = spawn("ak",["zchain", "--crawl", ch]);
response_string = "";
command.stdout.on("data", data => {
response_string = response_string + data;
diff --git a/api/validators/ZchainValidator/index.js b/api/validators/ZchainValidator/index.js
index f4080d0..80939d0 100644
--- a/api/validators/ZchainValidator/index.js
+++ b/api/validators/ZchainValidator/index.js
@@ -65,7 +65,7 @@ function continuethings(exitcode,sh,res){
*
*/
module.exports = (ch, res) => {
- const command = spawn("ak-enter",["-n",ch]);
+ const command = spawn("ak",["zchain", "--crawl", "-n", ch]);
response_string = "";
command.stdout.on("data", data => {
response_string = response_string + data;
diff --git a/bin/ak-config b/bin/ak-config
index 24db38f..6be3f8c 100755
--- a/bin/ak-config
+++ b/bin/ak-config
@@ -31,7 +31,7 @@ _ak_config_show(){
_ak_gpg_key_self_export $KEY
GPG_PUB_KEY=$(_ak_ipfs_add $KEY)
rm $KEY
- profile="$(ak-profile --index)"
+ profile="$(ak-profile -l)"
echo '
{
diff --git a/bin/ak-follow b/bin/ak-follow
index c289b0f..d8461b8 100755
--- a/bin/ak-follow
+++ b/bin/ak-follow
@@ -1,26 +1,96 @@
#!/bin/bash
-FOLLOWING="$HOME/.arching-kaos/following"
-PROGRAM="$(basename $0)"
+##
+## You can maintain a list of friendly zchains or ids
+##
+## Usage:
+##
+## -h, --help Prints this help message
+##
+## -f, --follow Adds a ... to your follow list
+##
+## -l, --list Shows a list of your followings
+##
+## -u, --unfollow Unfollows a ...
+##
+fullprogrampath="$(realpath $0)"
+PROGRAM=$(basename $0)
+descriptionString="Following stuff"
+
source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_script
source $AK_LIBDIR/_ak_ipfs
-if [ ! -z $1 ]
-then
- grep $1 $FOLLOWING
- if [ $? == 0 ]
+FOLLOWING="$HOME/.arching-kaos/following"
+
+_ak_follow_follow(){
+ if [ ! -z $1 ]
then
- _ak_log_error "Already exists"
- exit 1
+ grep $1 $FOLLOWING
+ if [ $? == 0 ]
+ then
+ _ak_log_error "Already exists"
+ exit 1
+ fi
+ echo $1 >> $FOLLOWING
+ IPFS=$(_ak_ipfs_add $FOLLOWING)
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "Addition failed"
+ exit 1
+ fi
+ ak-profile set following $IPFS
+ exit 0
fi
- echo $1 >> $FOLLOWING
- IPFS=$(_ak_ipfs_add $FOLLOWING)
- if [ $? != 0 ]
+ printf "Usage:\n\t%s <AKID_IPFS_CID_v0>\n" $PROGRAM
+ exit 1
+}
+
+_ak_follow_list(){
+ if [ -f $FOLLOWING ]
+ then
+ cat $FOLLOWING
+ else
+ _ak_log_info "No following file, creating"
+ touch $FOLLOWING
+ echo "None found"
+ fi
+}
+
+_ak_follow_unfollow(){
+ FOLLOWING="$HOME/.arching-kaos/following"
+ fentries="$(cat $FOLLOWING)"
+ if [ ! -z $1 ]
then
- _ak_log_error "Addition failed"
+ search="$1"
+ sed -i -e 's,'"$search"',,g' $FOLLOWING
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "sed didn't found $search"
+ exit 1
+ fi
+ IPFS="$(_ak_ipfs_add $FOLLOWING)"
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "IPFS problem"
+ exit 1
+ fi
+ ak-profile set repositories "$IPFS"
+ exit 0
+ else
+ echo "Who to unfollow?"
+ echo "Type following to see them"
exit 1
fi
- ak-profile set following $IPFS
- exit 0
+}
+
+if [ ! -z $1 ]
+then
+ case $1 in
+ -h | --help) _ak_usage; exit;;
+ -f | --follow) _ak_follow_follow $2; exit;;
+ -l | --list) _ak_follow_list $2; exit;;
+ -u | --unfollow) _ak_follow_unfollow $2; exit;;
+ * ) _ak_usage;;
+ esac
+else _ak_usage
fi
-printf "Usage:\n\t%s <AKID_IPFS_CID_v0>\n" $PROGRAM
-exit 1
diff --git a/bin/ak-following b/bin/ak-following
deleted file mode 100755
index 734f6ed..0000000
--- a/bin/ak-following
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-PROGRAM="$(basename $0)"
-source $AK_LIBDIR/_ak_log
-
-FOLLOWING="$HOME/.arching-kaos/following"
-if [ -f $FOLLOWING ]
-then
- cat $FOLLOWING
-else
- _ak_log_info "No following file, creating"
- touch $FOLLOWING
- echo "None found"
-fi
diff --git a/bin/ak-mempool b/bin/ak-mempool
index bcf56ad..4e796fb 100755
--- a/bin/ak-mempool
+++ b/bin/ak-mempool
@@ -1,11 +1,24 @@
#!/bin/bash
+##
+## Brief description
+##
+## Usage:
+##
+## -h, --help Prints this help message
+##
+fullprogrampath="$(realpath $0)"
+PROGRAM=$(basename $0)
+descriptionString="Quick description"
+
+# At least these
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_script
# Assumptions:
# I suppose each ak node is connected to some IP.
# They also run IPFS.
# They also are a part of our swarm.
# So should we ask for our peers?
-source $AK_LIBDIR/_ak_log
source $AK_LIBDIR/_ak_ipfs
_ak_ipfs_swarm_peers > tmp_peers
diff --git a/bin/ak-miner-script b/bin/ak-miner-script
index 9119b0c..ae9f7a8 100755
--- a/bin/ak-miner-script
+++ b/bin/ak-miner-script
@@ -43,7 +43,7 @@ proofofwork(){
usage(){
echo "$PROGRAM <somethings> <previous> <miner_address>"
- echo " hit ak-enter after that !!! "
+ echo " hit 'ak-zchain --crawl' after that."
}
if [ -z "$1" ] ;
diff --git a/bin/ak-profile b/bin/ak-profile
index f4051eb..67b67d1 100755
--- a/bin/ak-profile
+++ b/bin/ak-profile
@@ -7,7 +7,7 @@
##
## -h, --help Prints this help message
##
-## -i, --index Show current status
+## -l, --local-index Show current status
##
## --show <data IPFS CIDv0> Show profile entry from specified DATA
## IPFS CIDv0
@@ -29,9 +29,7 @@ fullprogrampath="$(realpath $0)"
PROGRAM=$(basename $0)
descriptionString="Profile module"
ZPROFILEDIR="$AK_WORKDIR/profile"
-TEMP="/tmp/aktmp"
-# Outputs to log file in the classic format :)
source $AK_LIBDIR/_ak_log
source $AK_LIBDIR/_ak_script
source $AK_LIBDIR/_ak_ipfs
@@ -40,14 +38,16 @@ source $AK_LIBDIR/_ak_zblock
# Whatever the command is, we check if $ZPROFILEDIR is there.
# If NOT we create it and we change dir there.
-if [ ! -d $ZPROFILEDIR ]; then
+if [ ! -d $ZPROFILEDIR ]
+then
mkdir $ZPROFILEDIR
- cd $ZPROFILEDIR
_ak_log_info "zprofiledir created"
else
_ak_log_info "zprofiledir found"
fi
+cd $ZPROFILEDIR
+
# This is working with DATA blocks. DATA that matched profile/add ACTION
#
# The profile settings/configuration is part of the blockchain produced.
@@ -59,7 +59,7 @@ _ak_modules_profile_show(){
_ak_log_info "Working with $1"
_ak_ipfs_cat $(echo $(_ak_ipfs_cat $1) | jq '.ipfs' -r)
else
- echo "No DATA provided"
+ _ak_log_error "No DATA provided"
exit 1
fi
}
@@ -71,12 +71,12 @@ _ak_modules_profile_propget(){
then
if [ ! -f $ZPROFILEDIR/$1 ]
then
- echo "property not found"
+ _ak_log_error "property not found $1"
else
cat $ZPROFILEDIR/$1
fi
else
- echo "No particular property... indexing"
+ _ak_log_error "No particular property... indexing"
_ak_modules_profile_index
fi
}
@@ -89,13 +89,13 @@ _ak_modules_profile_propwrite(){
EOF
if [ $? == 0 ]
then
- echo "Added successfully... proceeding"
+ _ak_log_info "Added successfully... proceeding"
IPFS_FILE=$(_ak_ipfs_add $ZPROPERTY_FILE)
- echo "Prop writting,,, $IPFS_FILE"
+ _ak_log_info "Prop writting,,, $IPFS_FILE"
_ak_modules_profile_add $ZPROPERTY_KEY
cd $ZPROFILEDIR
else
- echo "Couldn't write to file $ZPROFILEDIR/$TO_FILE"
+ _ak_log_error "Couldn't write to file $ZPROFILEDIR/$TO_FILE"
exit 1
fi
}
@@ -107,19 +107,19 @@ _ak_modules_profile_propset(){
ZPROPERTY_KEY="$1"
if [ ! -f $ZPROPERTY_FILE ]
then
- echo "No such property: $ZPROPERTY_KEY ... creating"
+ _ak_log_warning "No such property: $ZPROPERTY_KEY ... creating"
ZPROPERTY_VALUE="$2"
if [ ! -z "$ZPROPERTY_VALUE" ]
then
touch $ZPROPERTY_FILE
- echo "$ZPROPERTY_KEY = $ZPROPERTY_VALUE in file $ZPROPERTY_FILE"
+ _ak_log_debug "$ZPROPERTY_KEY = $ZPROPERTY_VALUE in file $ZPROPERTY_FILE"
_ak_modules_profile_propwrite #"$ZPROPERTY_FILE" "${ZPROPERTY_VALUE}"
else
- echo "No value for $1"
+ _ak_log_error "No value for $1"
fi
else
- echo found $ZPROPERTY_FILE
- echo "$ZPROPERTY_KEY = $ZPROPERTY_VALUE in file $ZPROPERTY_FILE"
+ _ak_log_info "found $ZPROPERTY_FILE"
+ _ak_log_debug "$ZPROPERTY_KEY = $ZPROPERTY_VALUE in file $ZPROPERTY_FILE"
ZPROPERTY_VALUE="$2"
read -p "Overwrite $1 with ${ZPROPERTY_VALUE} ? " yn
case $yn in
@@ -127,11 +127,11 @@ _ak_modules_profile_propset(){
[Nn]* ) exit 130;;
* ) echo "Answer please";;
esac
- echo $IPFS_FILE
+ _ak_log_debug $IPFS_FILE
_ak_modules_profile_show $IPFS_FILE
fi
else
- echo "conditions unmet"
+ _ak_log_error "conditions unmet"
exit 244
fi
}
@@ -159,10 +159,10 @@ _ak_modules_profile_import(){
then
if [ ! -d $1 ]
then
- echo "Profile folder check: Folder $1 does not exist. Stopping..."
+ _ak_log_error "Profile folder check: Folder $1 does not exist. Stopping..."
exit 4
else
- echo "Profile folder check: Folder $1 exists."
+ _ak_log_info "Profile folder check: Folder $1 exists."
fl="$(ls -1 $1)"
for f in $fl
do
@@ -170,7 +170,7 @@ _ak_modules_profile_import(){
done
fi
else
- echo "No value"
+ _ak_log_error "No value"
exit 6
fi
exit 224
@@ -178,11 +178,11 @@ _ak_modules_profile_import(){
# Adds a file as a profile/add ACTION on the zchain.
_ak_modules_profile_add(){
- TEMP="$(_ak_make_temp_directory)"
- cd $TEMP
+ TEMPASSIN="$(_ak_make_temp_directory)"
+ cd $TEMPASSIN
if [ -f $ZPROFILEDIR/$1 ]; then
FILE="$ZPROFILEDIR/$1"
- echo "Adding from " $FILE
+ _ak_log_info "Adding from " $FILE
FILE_IPFS_HASH=$(_ak_ipfs_add $FILE)
FILE_SIGN_FILE=$(pwd)/$1".asc"
_ak_gpg_sign_detached $FILE_SIGN_FILE $FILE
@@ -195,26 +195,26 @@ _ak_modules_profile_add(){
}
EOF
else
- echo "File $FILE doesn't exist";
+ _ak_log_error "File $FILE doesn't exist"
exit 2
fi
_ak_zblock_pack "profile/add" $(pwd)/data
if [ $? -ne 0 ]
then
- echo "error??"
+ _ak_log_error "Error while packing"
exit 1
fi
- echo "Profile added successfully"
+ _ak_log_info "Profile zblock added successfully"
cd $ZPROFILEDIR
- rm -rf "$TEMPASSIN"
+ rm -rf $TEMPASSIN
}
if [ ! -z $1 ]; then
case $1 in
-h | --help) _ak_usage; exit;;
- -i | --index) _ak_modules_profile_index; exit;;
+ -l | --local-index) _ak_modules_profile_index; exit;;
--show) _ak_modules_profile_show $2; exit;;
-i | --import) _ak_modules_profile_import $2; exit;;
-a | --add) _ak_modules_profile_add $2; exit;;
diff --git a/bin/ak-schain b/bin/ak-schain
new file mode 100755
index 0000000..1221274
--- /dev/null
+++ b/bin/ak-schain
@@ -0,0 +1,28 @@
+#!/bin/bash
+##
+## Various tools for schains
+##
+## Usage:
+##
+## -h, --help Prints this help message
+##
+## -c, --crawl Crawl an schain or latest known
+##
+fullprogrampath="$(realpath $0)"
+PROGRAM=$(basename $0)
+descriptionString="Schain tools"
+
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_script
+source $AK_LIBDIR/_ak_schain
+
+# Flags to run
+if [ ! -z $1 ]
+then
+ case $1 in
+ -h | --help) _ak_usage; exit;;
+ -c | --crawl) _ak_schain_crawl_interface $*; exit;;
+ * ) _ak_usage;;
+ esac
+else _ak_usage
+fi
diff --git a/bin/ak-schain-latest-cached b/bin/ak-schain-latest-cached
deleted file mode 100755
index 18ac1df..0000000
--- a/bin/ak-schain-latest-cached
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-PROGRAM="$(basename $0)"
-source $AK_LIBDIR/_ak_log
-if [ ! -f $AK_WORKDIR/schain.latest ]
-then
- ak-find-latest-mined-sblock > $AK_WORKDIR/schain.latest
-fi
-cat $AK_WORKDIR/schain.latest
diff --git a/bin/ak-unfollow b/bin/ak-unfollow
deleted file mode 100755
index c23aeef..0000000
--- a/bin/ak-unfollow
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-PROGRAM="$(basename $0)"
-source $AK_LIBDIR/_ak_config
-source $AK_LIBDIR/_ak_ipfs
-FOLLOWING="$HOME/.arching-kaos/following"
-fentries="$(cat $FOLLOWING)"
-if [ ! -z $1 ]
-then
- search="$1"
- sed -i -e 's,'"$search"',,g' $FOLLOWING
- if [ $? != 0 ]
- then
- _ak_log_error "sed didn't found $search"
- exit 1
- fi
- IPFS="$(_ak_ipfs_add $FOLLOWING)"
- if [ $? != 0 ]
- then
- _ak_log_error "IPFS problem"
- exit 1
- fi
- ak-profile set repositories "$IPFS"
- exit 0
-else
- echo "Who to unfollow?"
- echo "Type following to see them"
- exit 1
-fi
-
-
diff --git a/bin/ak-zchain b/bin/ak-zchain
index c2ecbc6..df73e7c 100755
--- a/bin/ak-zchain
+++ b/bin/ak-zchain
@@ -34,6 +34,9 @@
##
## --calculate-size Calculates the size of a zchain
##
+## --crawl Crawls zchains ( --crawl --help for more
+## options)
+##
## --crawl-self Crawls the local zchain
##
## --crawl-remote-ipfs Crawls a remote zchain
@@ -44,9 +47,11 @@ fullprogrampath="$(realpath $0)"
PROGRAM=$(basename $0)
descriptionString="Zchain tools"
-# At least these
source $AK_LIBDIR/_ak_log
source $AK_LIBDIR/_ak_script
+source $AK_LIBDIR/_ak_ipfs
+source $AK_LIBDIR/_ak_gpg
+source $AK_LIBDIR/_ak_zblock
source $AK_LIBDIR/_ak_zchain
# Flags to run
@@ -55,10 +60,11 @@ if [ ! -z $1 ]; then
-h | --help) _ak_usage; exit;;
-r | --reset) _ak_zchain_reset; exit;;
--rebase) if [ ! -z $2 ]; then _ak_zchain_rebase $2; else exit 1; fi; exit;;
- --rebase-back-one) _ak_zchain_rebase "`ak-enter -l 2 | jq -r '.[1].zblock'`" ; exit ;;
+ --rebase-back-one) _ak_zchain_rebase "`_ak_zchain_crawl -l 2 | jq -r '.[1].zblock'`" ; exit ;;
--extract-cids) _ak_zchain_extract_cids $2; exit;;
--extract-data-cids) _ak_zchain_extract_data_cids $2; exit;;
--calculate-size) _ak_zchain_calculate_size $2; exit;;
+ --crawl) shift; _ak_zchain_crawl $*; exit;;
--crawl-self) _ak_zchain_crawl_self; exit;;
--crawl-remote-ipfs) _ak_zchain_crawl_remote_ipfs $2; exit;;
--crawl-remote-ipns) _ak_zchain_crawl_remote_ipns $2; exit;;
diff --git a/lib/_ak_network b/lib/_ak_network
index 1d77eef..25fa68a 100755
--- a/lib/_ak_network
+++ b/lib/_ak_network
@@ -231,7 +231,6 @@ _ak_network_show_peers_ipfs(){
_ak_not_implemented _ak_network_show_peers_ipfs
}
-
_ak_network_show_peers(){
if [ ! -z $1 ] && [ -n "$1" ]
then
@@ -246,9 +245,7 @@ _ak_network_show_peers(){
jq -j | \
sed -e 's/]\[/,/g' | \
jq
-
fi
-
}
_ak_network_ipfs_connect_bootstrap(){
@@ -267,11 +264,9 @@ _ak_network_cjdns_connect(){
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)"
diff --git a/lib/_ak_schain b/lib/_ak_schain
new file mode 100755
index 0000000..2ff56eb
--- /dev/null
+++ b/lib/_ak_schain
@@ -0,0 +1,93 @@
+#!/bin/bash
+AK_SCHAINSDIR=$AK_WORKDIR/schains
+GENESIS="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+
+_ak_schain_latest_cached(){
+ if [ ! -f $AK_WORKDIR/schain.latest ]
+ then
+ ak-find-latest-mined-sblock > $AK_WORKDIR/schain.latest
+ fi
+ cat $AK_WORKDIR/schain.latest
+}
+
+_ak_schain_tidy(){
+ SLATEST=$(ak-find-latest-mined-sblock | jq -r '.latest_block')
+ if [ ! -d $AK_SCHAINSDIR ]
+ then
+ mkdir $AK_SCHAINSDIR
+ fi
+}
+
+_ak_schain_block_latest_block_hash(){
+ ak-find-latest-mined-sblock | jq -r '.latest_block'
+}
+
+_ak_schain_crawl(){
+ if [ ! -z $1 ] && [ -n "$1" ]
+ then
+ CUR_TARGET="$1"
+ else
+ _ak_log_warning "No next target found. So long for $1"
+ exit 1
+ fi
+
+ if [ $counter -eq 0 ]
+ then
+ echo '['
+ counter=$(($counter + 1))
+ else
+ _ak_log_info "Counter: $counter, LIMIT_ENABLED: $LIMIT_ENABLED, LIMIT: $LIMIT"
+ if [ "$LIMIT_ENABLED" == "yes" ]
+ then
+ if [ $counter -eq $LIMIT ]
+ then
+ echo ']'
+ exit 0
+ fi
+ fi
+ echo ','
+ counter=$(($counter + 1))
+ fi
+
+ if [ "$1" == "$GENESIS" ]
+ then
+ echo '{"genesis":"genesis"}' | jq
+ echo ']'
+ _ak_log_warning "Looks like genesis. Exiting with 0"
+ exit 0
+ fi
+
+ if [ ! -f "$AK_MINEDBLOCKSDIR/$CUR_TARGET" ]
+ then
+ _ak_log_warning "Could not find $CUR_TARGET"
+ else
+ ( echo -n '{"sblock":"'$1'",' &&
+ ak-sblock-show $CUR_TARGET | sed -e 's/^{//g') | jq
+ NEXT_TARGET="$(ak-sblock-show $CUR_TARGET | jq -r '.previous')"
+ _ak_log_info "Found previous: $NEXT_TARGET"
+ _ak_schain_crawl "$NEXT_TARGET"
+ fi
+}
+
+_ak_schain_crawl_interface(){
+ LIMIT_ENABLED="no"
+ LIMIT=0
+ counter=0
+ if [ -z $1 ] || [ ! -n "$1" ]
+ then
+ _ak_schain_crawl `_ak_schain_block_latest_block_hash`
+ else
+ while [ "$#" ]; do
+ case "$1" in
+ -l)
+ LIMIT_ENABLED="yes"
+ LIMIT=$2
+ shift 2
+ ;;
+ *)
+ _ak_schain_crawl "$1"
+ ;;
+ esac
+ done
+ fi
+}
diff --git a/lib/_ak_zblock b/lib/_ak_zblock
index f379870..278619f 100755
--- a/lib/_ak_zblock
+++ b/lib/_ak_zblock
@@ -457,7 +457,7 @@ _ak_zblock_pack(){
# We check firstly if the encapsulated value of the "ipfs" key has already
# appeared in the zchain.
TO_CHECK="$(cat $MESSAGE | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g')"
- ak-enter | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g' | sort | uniq > tempisalreadythere
+ _ak_zchain_crawl | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g' | sort | uniq > tempisalreadythere
while IFS="" read -r p || [ -n "$p" ]
do
if [ "$p" == "$TO_CHECK" ]
diff --git a/lib/_ak_zchain b/lib/_ak_zchain
index d15048a..5dbcf62 100755
--- a/lib/_ak_zchain
+++ b/lib/_ak_zchain
@@ -80,18 +80,18 @@ _ak_zchain_rebase(){
_ak_zchain_extract_cids(){
if [ ! -z $1 ] && [ -n "$1" ]
then
- ak-enter $1 | jq -M | grep Qm | sed -e 's/".*"://g; s/ //g; s/[{,"]//g' | sort | uniq
+ ak zchain --crawl $1 | jq -M | grep Qm | sed -e 's/".*"://g; s/ //g; s/[{,"]//g' | sort | uniq
else
- ak-enter | jq -M | grep Qm | sed -e 's/".*"://g; s/ //g; s/[{,"]//g' | sort | uniq
+ ak zchain --crawl | jq -M | grep Qm | sed -e 's/".*"://g; s/ //g; s/[{,"]//g' | sort | uniq
fi
}
_ak_zchain_extract_data_cids(){
if [ ! -z $1 ]
then
- ak-enter $1 | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g'
+ ak zchain --crawl $1 | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g'
else
- ak-enter | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g'
+ ak zchain --crawl | jq | grep ipfs | awk '{print $2}' | sed -e 's/"//g;s/,//g'
fi
}
@@ -120,14 +120,107 @@ _ak_zchain_calculate_size(){
rm -rf $temp
}
+_ak_zchain_crawl(){
+ entrance="$(cat $AK_ZLATEST)"
+ verify=1
+ limit=0
+ fromIpns=0
+ while [ "$#" ]; do
+ case "$1" in
+ -h | --help)
+ printf "
+ak zchain --crawl [-N | --no-verify] [-l | --limit <number>] [zblock]
+ak zchain --crawl [-N | --no-verify] [-l | --limit <number>] -n <zchain>
+Usage:
+
+ --help, -h Print this help and exit
+
+ --chain <ipns-link>, -n <ipns-link> Crawl specified chain
+
+ --no-verify, -N Don't verify signatures
+
+ <ipfs-link> Specify IPFS CID for entrance
+
+Note that combined flags don't work for now
+Running with no flags crawls your chain based on AK_ZLATEST environment
+variable"
+ exit 1
+ ;;
+ -l | --limit)
+ limit=$2
+ shift 2
+ ;;
+ -N | --no-verify)
+ verify=0
+ shift
+ ;;
+ -n | --chain | --ipns)
+ fromIpns=1
+ ipns=$1
+ shift
+ ol=$1
+ entrance="$(_ak_ipns_resolve $1)"
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "Could not resolve IPNS name"
+ exit 1
+ fi
+ shift
+ ;;
+ *)
+ test="$1"
+ if [ ! -z "$test" ] && [ $fromIpns -eq 0 ]
+ then
+ _ak_ipfs_cid_v0_check "$test"
+ entrance="$test"
+ elif [ -z "$entrance" ] && [ $fromIpns -eq 1 ]
+ then
+ entrance="$(cat $AK_ZLATEST)"
+ fi
+ break
+ esac
+ done
+ # We assign the IPFS CIDv0 of an empty file as this is used
+ # as our GENESIS block, hence the "seed" that the tree grows
+ # from.
+ seed="$(cat $AK_ZGENESIS)"
+ # We assume that we found the entrance inside a block, hence
+ # ZBLOCK is labeled as previous
+ zblock="$entrance"
+ # Enter temp folder
+ TEMPASSIN="$(_ak_make_temp_directory)"
+ cd $TEMPASSIN
+ counter=0
+ # The loop
+ # We break the loop from inside the loop
+ while true
+ do
+ if [ $counter -eq 0 ]
+ then
+ echo -n '['
+ fi
+ counter=$(($counter + 1))
+ _ak_zblock_show "$zblock"
+ if [ $limit -ne 0 ] && [ $limit -eq $counter ]
+ then
+ echo -n ']'
+ exit 0
+ else
+ echo -n ','
+ fi
+ done
+}
+
_ak_zchain_crawl_self(){
- ak enter
+ _ak_zchain_crawl
}
_ak_zchain_crawl_remote_ipfs(){
- ak enter $1
+ _ak_zchain_crawl $1
+ #ak enter $1
}
_ak_zchain_crawl_remote_ipns(){
- ak enter -n $1