diff options
Diffstat (limited to 'lib/_ak_smfiles')
-rwxr-xr-x | lib/_ak_smfiles | 65 |
1 files changed, 27 insertions, 38 deletions
diff --git a/lib/_ak_smfiles b/lib/_ak_smfiles index 55ec381..91e075e 100755 --- a/lib/_ak_smfiles +++ b/lib/_ak_smfiles @@ -1,5 +1,24 @@ -#!/bin/bash -source $AK_LIBDIR/_ak_log +#!/usr/bin/env bash +### +### arching-kaos-tools +### Tools to interact and build an Arching Kaos Infochain +### Copyright (C) 2021 - 2025 kaotisk +### +### This program is free software: you can redistribute it and/or modify +### it under the terms of the GNU General Public License as published by +### the Free Software Foundation, either version 3 of the License, or +### (at your option) any later version. +### +### This program is distributed in the hope that it will be useful, +### but WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +### GNU General Public License for more details. +### +### You should have received a copy of the GNU General Public License +### along with this program. If not, see <http://www.gnu.org/licenses/>. +### +source $AK_LIBDIR/_ak_lib_load +_ak_lib_load _ak_log # The directory where the chunked data will be living at CHKDIR="$AK_WORKDIR/ftr" @@ -55,17 +74,14 @@ else _ak_log_info "Workdir found" fi -cdaw(){ +function cdaw(){ pwd > tmp_holder } -_ak_sm_file_joiner(){ +function _ak_sm_file_joiner(){ cdaw - CURDIR="$(cat tmp_holder)" - TMPWD="/tmp/rjs" - if [ ! -d "$TMPWD" ] then mkdir -p "$TMPWD" @@ -75,46 +91,34 @@ _ak_sm_file_joiner(){ exit 1 fi fi - cd $CHKDIR if [ $? -ne 0 ] then _ak_log_error "Can't get dir" exit 1 fi - if [ ! -z $1 ] then MAPSFILE="$1" - - echo '#!/bin/bash' > script - + echo '#!/usr/bin/env bash' > script # We create a script to copy all the chunks and rename them to their serialized # name produced by split when we splitted the file awk '{print "cp '$CHKDIR'/"$1" '$TMPWD'/"$2" "}' $FILEMAPSDIR/$MAPSFILE| grep chk >> script - bash script - if [ $? -ne 0 ] then echo "Error executing copy script" exit 1 fi rm script - cd $TMPWD - echo "$PWD" - # Final name we are going to rename to OUTPUT="$(tail -n 1 $FILEMAPSDIR/$MAPSFILE | awk '{print $2}')" - echo $OUTPUT - # We grep the MAPSFILE for chk filenames in lines and we print them all in # one line so the first `cat` will concatenate all chunks to OUTPUT cat $(echo -n $(cat $FILEMAPSDIR/$MAPSFILE|grep chk|awk '{print $2" "}'|tr -d '\n')) > $OUTPUT - # We check if everything is okay sha512sum -c $FILEMAPSDIR/$MAPSFILE if [ $? -ne 0 ] @@ -122,11 +126,8 @@ _ak_sm_file_joiner(){ _ak_log_error "Error while checking sums" exit 1 fi - mv $OUTPUT $CURDIR - rm -rf "$TMPWD" - rm $CURDIR/tmp_holder else _ak_log_error "No hash given" @@ -134,7 +135,7 @@ _ak_sm_file_joiner(){ fi } -_ak_sm_file_splitter(){ +function _ak_sm_file_splitter(){ # # The concept is simple # @@ -152,10 +153,8 @@ _ak_sm_file_splitter(){ # # 6. We are done! # - # Uncomment next line if you want to debug # set -xe - if [ ! -f "$1" ] then echo "ERROR File not found" @@ -163,44 +162,34 @@ _ak_sm_file_splitter(){ else FILE="$1" fi - # Uncomment next line in case you want to debug the resulting script as well # echo 'set -xe' > $TEMPORARYDIR/cmd_queue.sh - # We get the SHA512 hash for the $FILE given CHECKSUM=$(sha512sum "$FILE"|awk '{print $1}') - # We split the file into 1048576 bytes and output the chunks into TECHDIR split -b 1048576 --additional-suffix ".chk" -d "$FILE" "$TECHDIR/$(basename "$FILE")-" - # We go over there... cd $TECHDIR - # We get every chunks' SHA512 and we craft a script to rename the chunks and # move them to CHKDIR sha512sum * > $TEMPORARYDIR/map; while IFS="" read -r p || [ -n "$p" ] do echo $p | awk '{print "mv " $2 " '$CHKDIR'/" $1}' >> $TEMPORARYDIR/cmd_queue.sh done < $TEMPORARYDIR/map - # We run the crafted script sh $TEMPORARYDIR/cmd_queue.sh - # and we delete it rm $TEMPORARYDIR/cmd_queue.sh - # We inform the map about the original $FILE name and SHA512 echo "$CHECKSUM $(basename "$FILE")" >> $TEMPORARYDIR/map - # We get the SHA512 hash of the resulted map file MAPFILEHASH="$(sha512sum $TEMPORARYDIR/map | awk '{ print $1 }')" - # and we rename it with it and move it to FILEMAPSDIR `sha512sum $TEMPORARYDIR/map | awk '{print "mv " $2 " '$FILEMAPSDIR'/" $1}'` - # We remove the TEMPORARYDIR rm -rf $TEMPORARYDIR - # and print the MAPFILEHASH echo "$MAPFILEHASH" } + +_ak_log_debug "_ak_smfiles loaded $(caller)" |