You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.2 KiB
70 lines
1.2 KiB
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
declare -a DBHashList
|
|
DBHashList=(
|
|
[22816574]=f5894991e83cff54b215cda93f18bc813bb9bf9a45643c8751f09891aad1f091
|
|
)
|
|
|
|
DB_FILES="CURRENT MANIFEST* *.log *.ldb"
|
|
|
|
function dbFilesHash() {
|
|
sha256sum $DB_FILES
|
|
}
|
|
|
|
function dbRootHash() {
|
|
echo -ne "$1" | tr -s [:space:] : | sha256sum | cut -d " " -f 1
|
|
}
|
|
|
|
function checkRootHash() {
|
|
rootHash=$1
|
|
for height in "${!DBHashList[@]}"
|
|
do
|
|
dbhash=${DBHashList[$height]}
|
|
if [ $dbhash == $rootHash ];then
|
|
echo "Success! The hash matches the height $height."
|
|
exit 0
|
|
fi
|
|
done
|
|
echo "check failed!" >&2
|
|
exit 1
|
|
}
|
|
|
|
print_usage() {
|
|
progname="${0##*/}"
|
|
cat <<- ENDEND
|
|
|
|
usage: ${progname} COMMAND DBDIR
|
|
|
|
The COMMAND are:
|
|
hash calculate root hash for snapdb
|
|
check verify root hash of snpadb
|
|
DBDIR is path of db
|
|
|
|
Ex:
|
|
${progname} hash ./harmony_db_0
|
|
${progname} check ./harmony_db_0
|
|
ENDEND
|
|
}
|
|
|
|
CMD=$1
|
|
DBDIR=$2
|
|
if [ -z $DBDIR ];then
|
|
print_usage
|
|
exit 1
|
|
fi
|
|
cd $DBDIR
|
|
|
|
case "$CMD" in
|
|
check)
|
|
rootHash=`dbRootHash "$(dbFilesHash)"`
|
|
checkRootHash $rootHash
|
|
;;
|
|
hash)
|
|
dbRootHash "$(dbFilesHash)"
|
|
;;
|
|
*)
|
|
print_usage
|
|
;;
|
|
esac
|
|
|