diff options
author | kaotisk <kaotisk@arching-kaos.org> | 2023-04-03 00:24:49 +0300 |
---|---|---|
committer | kaotisk <kaotisk@arching-kaos.org> | 2023-04-03 00:24:49 +0300 |
commit | 9606644a0beb4f2883e1e0f4c6c81b42ab40b3a1 (patch) | |
tree | 5f16ff3c7506b653862e0171d71163074f67c96e /bin/ak-sm-files | |
parent | fe1fb88889b2c3949383c254f3058da24ba5e3f2 (diff) | |
download | arching-kaos-tools-9606644a0beb4f2883e1e0f4c6c81b42ab40b3a1.tar.gz arching-kaos-tools-9606644a0beb4f2883e1e0f4c6c81b42ab40b3a1.tar.bz2 arching-kaos-tools-9606644a0beb4f2883e1e0f4c6c81b42ab40b3a1.zip |
Renaming to prefix convention, introduced ipfs wrappers so it can be easier to maintain, changes in filesplitter and filejoiner as they move sm submodule namespace... like there are namespaces in bash or something
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 |