aboutsummaryrefslogtreecommitdiff
path: root/bin/ak-sm-files
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2023-04-03 00:24:49 +0300
committerkaotisk <kaotisk@arching-kaos.org>2023-04-03 00:24:49 +0300
commit9606644a0beb4f2883e1e0f4c6c81b42ab40b3a1 (patch)
tree5f16ff3c7506b653862e0171d71163074f67c96e /bin/ak-sm-files
parentfe1fb88889b2c3949383c254f3058da24ba5e3f2 (diff)
downloadarching-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-xbin/ak-sm-files156
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