diff options
Diffstat (limited to 'bin/ak-sm-files')
-rwxr-xr-x | bin/ak-sm-files | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/bin/ak-sm-files b/bin/ak-sm-files new file mode 100755 index 0000000..7eb3b7d --- /dev/null +++ b/bin/ak-sm-files @@ -0,0 +1,156 @@ +#!/bin/bash +# The following creates a mixtape data message +# We can extend it by calling the ak-pack_z_block.sh mixtape/add data +ZFILESDIR="$AK_WORKDIR/files" +TEMP="/tmp/aktmp" +PROGRAM="$(basename $0)" +#set -xe +logit(){ + ak-logthis "<$PROGRAM>" "$1" "$2" +} +if [ ! -d $ZFILESDIR ]; then + mkdir $ZFILESDIR + if [ $? == 0 ] + then + logit "[INFO]" "Folder $ZFILESDIR created!" + else + logit "[ERROR]" "Failed to create $ZFILESDIR folder" + exit 1 + fi + cd $ZFILESDIR +else + logit "[INFO]" "$ZFILESDIR found!" +fi +tempassin(){ + if [ ! -z $1 ]; + then + TEMPASSIN="$1" + else + TIMESTAMP="$(date -u +%s)" + TEMPASSIN="/tmp/aktmp_$TIMESTAMP" + fi + if [ ! -d $TEMPASSIN ]; then + mkdir $TEMPASSIN + fi + cd $TEMPASSIN + echo "$TEMPASSIN" + +} + +usage(){ + echo "$PROGRAM - file" + echo " add <file>" + echo " index" +} + +add(){ + CRP="$(pwd)" + FILENAME="$1" + main $FILENAME $CRP + cat $TEMPASSIN/data | jq -M +} +main(){ + FILENAME="$1" + CRP="$2" + echo "Adding $FILENAME" + logit "[INFO]" "Switching to tmp folder..." + TEMPASSIN="$(tempassin)" + + cd $TEMPASSIN + if [ $? == 0 ]; then + logit "[INFO]" "Success" + else + logit "[ERROR]" "Error with tmp folder" + exit 5 + fi + logit "[INFO]" "Copying $1 to $TEMPASSIN" + + cp $2/$1 $TEMPASSIN/$1 + if [ $? == 0 ]; then + logit "[INFO]" "Copied successfully" + else + logit "[ERROR]" "Error copying..." + fi + + FILE="$TEMPASSIN/$1" + + logit "[INFO]" "Adding $FILE to IPFS..." + FILE_IPFS_HASH=$(ak-ipfs-add $FILE) + if [ $? == 0 ]; then + logit "[INFO]" "Added $FILE to IPFS" + else + logit "[ERROR]" "Error in adding the $FILE to IPFS" + fi + + logit "[INFO]" "Adding $FILE to SHAMAPSYS..." + FILEMAP_SHA512_HASH=$(ak-sm-filesplitter $FILE) + if [ $? == 0 ]; then + logit "[INFO]" "Added $FILE to SHAMAPSYS" + else + logit "[ERROR]" "Error in adding the $FILE to SHAMAPSYS" + fi + + logit "[INFO]" "Signing..." + SIGN_FILE=$FILENAME".asc" + gpg2 --detach-sign --sign-with $FINGERPRINT --armor --output $SIGN_FILE $FILE + if [ $? == 0 ]; then + logit "[INFO]" "Signed" + else + logit "[ERROR]" "Error while signing" + fi + + logit "[INFO]" "Adding signature to IPFS" + SIGNATURE=$(ak-ipfs-add $TEMPASSIN/$SIGN_FILE) + if [ $? == 0 ]; then + logit "[INFO]" "Added" + else + logit "[ERROR]" "Error while adding" + fi + + logit "[INFO]" "Adding signature to SHAMAPSYS" + SHAMAPSIGMAP=$(ak-sm-filesplitter $TEMPASSIN/$SIGN_FILE) + if [ $? == 0 ]; then + logit "[INFO]" "Added" + else + logit "[ERROR]" "Error while adding" + fi + + cat > $TEMPASSIN/data <<EOF +{ + "timestamp":"$(date -u +%s)", + "filename":"$FILENAME", + "shamap":"$FILEMAP_SHA512_HASH", + "shamapsigmap":"$SHAMAPSIGMAP", + "ipfs":"$FILE_IPFS_HASH", + "detach":"$SIGNATURE" +} +EOF + +echo "Printing data..." +cat $TEMPASSIN/data +echo "Publishing..." + + ak-pack_z_block sha-files/announce data + if [ $? == 0 ] + then + echo "cool" + else + echo "not?" + exit 2 + fi +} + + +index(){ + tail -n1 $AK_WORKDIR/fmp/* | grep '^[abcdef1234567890]' | awk '{ print $2 }' +} + +if [ ! -z $1 ]; then + case $1 in + help) usage; exit;; + add) add $2; exit;; + index) index; exit;; + *) usage; exit;; + esac +else usage +fi |