187 lines
4.4 KiB
Bash
187 lines
4.4 KiB
Bash
#!/bin/bash
|
|
# file: gsl__db_manager
|
|
# Folder: /var/lib/gsl/scripts
|
|
# By echolib
|
|
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
|
|
|
|
|
#======================================================================
|
|
# Get Post Hash & Status From Database
|
|
#======================================================================
|
|
gsl__db_get_post_datas() {
|
|
gsl_db_post_hash=0
|
|
|
|
if [[ -f "$gsl_file_db_post" ]];then
|
|
|
|
gsl_db_post_hash=`
|
|
awk -F: 'NR == 1 {print $3}' \
|
|
"$gsl_file_db_post"`
|
|
|
|
! [[ "$gsl_db_post_hash" ]] \
|
|
&& gsl_db_post_hash=0
|
|
|
|
gsl_db_post_status=`
|
|
awk -F: 'NR == 2 {print $2}' \
|
|
"$gsl_file_db_post"`
|
|
|
|
else
|
|
# if check process, do not show (useless)
|
|
case "$1" in
|
|
check) true ;;
|
|
*)
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"DB" \
|
|
"File" \
|
|
"Missing for $gsl_post. Check it first" \
|
|
"$gsl_file_db_post"
|
|
gsl_checker_war=true
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
#======================================================================
|
|
# Get Post Hash and Compare from Database
|
|
#======================================================================
|
|
gsl__db_compare_post_hash() {
|
|
gsl_checker_war=true
|
|
|
|
if (( $gsl_post_hash == $gsl_db_post_hash ));then
|
|
|
|
gsl__logs_print \
|
|
"$gsl_log_i" \
|
|
"File" \
|
|
"Hash" \
|
|
"$gsl_post checked with hash:$gsl_db_post_hash" \
|
|
"${PWD}/$gsl_post"
|
|
|
|
else
|
|
|
|
gsl_post_new_hash=true
|
|
case "$gsl_db_post_hash" in
|
|
0)
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"File" \
|
|
"New" \
|
|
"$gsl_post not yet checked" \
|
|
"${PWD}/$gsl_post"
|
|
gsl_checker_war=true
|
|
;;
|
|
*)
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"File" \
|
|
"Hash" \
|
|
"$gsl_post Changed ($gsl_post_hash) !" \
|
|
"${PWD}/$gsl_post"
|
|
gsl_checker_war=true
|
|
;;
|
|
esac
|
|
|
|
fi
|
|
}
|
|
|
|
#======================================================================
|
|
# Set Post Status in Database according to proceess
|
|
#======================================================================
|
|
gsl__db_set_post_status() {
|
|
case "$1" in
|
|
chk)
|
|
case "$gsl_db_post_status" in
|
|
"")
|
|
gsl_db_post_status=$1
|
|
;;
|
|
esac
|
|
|
|
if ! [[ "$gsl_force_check" ]];then
|
|
[[ "$gsl_post_new_hash" ]] || return # Do Nothing if same Hash
|
|
fi
|
|
gsl__db_create_post "$gsl_db_post_status"
|
|
;;
|
|
|
|
wip)
|
|
case "$gsl_db_post_status" in
|
|
chk|www)
|
|
sed -i "2s/.*/Status:$1/" "$gsl_file_db_post" && \
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"DB" \
|
|
"File" \
|
|
"Status:$1 ; $gsl_post" \
|
|
"$gsl_file_db_post"
|
|
gsl_checker_war=true
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
www)
|
|
case "$gsl_db_post_status" in
|
|
wip)
|
|
sed -i "2s/.*/Status:$1/" "$gsl_file_db_post" && \
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"DB" \
|
|
"File" \
|
|
"Status:$1 ; $gsl_post" \
|
|
"$gsl_file_db_post"
|
|
gsl_checker_war=true
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
}
|
|
|
|
#======================================================================
|
|
# Create DB File from Data Post
|
|
#======================================================================
|
|
gsl__db_create_post() {
|
|
if [[ "$gsl_checker_err" ]];then
|
|
[[ -f "$gsl_file_db_post" ]] \
|
|
&& rm -f "$gsl_file_db_post" \
|
|
&& gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"DB" \
|
|
"File" \
|
|
"Remove ; error in $gsl_post" \
|
|
"$gsl_file_db_post"
|
|
return
|
|
fi
|
|
|
|
touch "$gsl_file_db_post"
|
|
|
|
# Main Print
|
|
printf '%s\n%s\n%s\n' \
|
|
"$gsl_post_type:${PWD}/$gsl_post:$gsl_post_hash:$gsl_post_size" \
|
|
"Status:$1" \
|
|
"`cat "$gsl_db_tmp"`" \
|
|
> "$gsl_file_db_post"
|
|
|
|
# Stats Print
|
|
printf '\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' \
|
|
"Stats" \
|
|
"Author:$gsl_header_author" \
|
|
"Date:$gsl_header_date" \
|
|
"Words:$gsl_stat_words" \
|
|
"Parag:$gsl_stat_p" \
|
|
"Links:$gsl_stat_link:$gsl_stat_links" \
|
|
"Strongs:$gsl_stat_strongs" \
|
|
"Bolds:$gsl_stat_bolds"\
|
|
"Italics:$gsl_stat_italics" \
|
|
"Abbrs:$gsl_stat_abbr:$gsl_stat_abbrs" \
|
|
"Images:$gsl_stat_image" \
|
|
"Files:$gsl_stat_file:$gsl_count_files" \
|
|
"Cites:$gsl_stat_bq" \
|
|
"ICodes:$gsl_stat_icode" \
|
|
"FCodes:$gsl_stat_fcode" \
|
|
>> "$gsl_file_db_post"
|
|
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"DB" \
|
|
"File" \
|
|
"Create datas from $gsl_post (status: $1)" \
|
|
"$gsl_file_db_post"
|
|
}
|