#!/bin/bash # set -xe if [ -z $1 ] then echo "Please provide a SHA512 hash" exit 1 fi if [ -z $2 ] then echo "Please an output filename" exit 2 fi echo $1 | grep ".\{128\}" if [ $? -ne 0 ] then echo "Look, I asked for a SHA512 hash, please try again" exit 1 fi treeRootHash="$1" outputFilename="$2" fmrk="$AK_WORKDIR/fmrk" ftr="$AK_WORKDIR/ftr" # This would be a kind of bootstrap for remote downloads # #remoteMrk="http://z.kaotisk-hund.com:8610/mrk" #remoteTr="http://z.kaotisk-hund.com:8610/tr" # pwd>.pwd dirWeWere=$(cat .pwd) # Enter temp folder TEMPASSIN="$(ak-tempassin)" cd $TEMPASSIN findDepth(){ currentNode="$1" if [ -f $fmrk/$currentNode ] && [ "$(du -b $fmrk/$currentNode | awk '{print $1}')" == "258" ] then fileHead="$(head -n 1 $fmrk/$currentNode)" counter="$(expr $counter + 1)" findDepth "$fileHead" elif [ ! -f $fmrk/$currentNode ] then printf "%s" "$counter" > depth else exit 111 # Try to download stuff # wget -s $remoteMrk/$currentNode -O $fmrk/$currentNode # if [ "$?" -ne 0 ] # then # exit 111 # fi # findDepth "$currentNode" fi } currentNode="$treeRootHash" counter=0 printf "%s" "$currentNode" > workspace.0 findDepth "$currentNode" depth="$(expr `cat depth` + 1)" counter="0" printf "%s" "$depth" if [ -f output ] then rm output fi touch output while [ "$counter" != "$depth" ] do printf "Entering loop... %s %s\n" "$counter" "$depth" while IFS="" read -r p || [ -n "$p" ] do nextLevel="$(expr $counter + 1)" if [ "$p" == "" ] then echo hi else if [ -f $fmrk/$p ] then if [ "$(head -n 1 $fmrk/$p)" == "$(tail -n 1 $fmrk/$p)" ] then head -n 1 $fmrk/$p >> workspace.$nextLevel else cat $fmrk/$p >> workspace.$nextLevel fi elif [ -f $ftr/$p ] then cat $ftr/$p >> output fi fi done < workspace.$counter counter="$(expr $counter + 1)" done base64 -d output > $dirWeWere/$outputFilename rm $dirWeWere/.pwd printf "Recreation of $treeRootHash as $outputFilename succeeded!"