#!/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 FROM DB posts.db #======================================================================= gsl__db_post_hash() { gsl_db_post_hash=` grep "$gsl_post" \ "$gsl_file_db_posts" \ | awk -F"|" '{print $3}'` } #======================================================================= # From checkers (bcodes,images,files): Write DB #======================================================================= gsl__db_line_file() { gsl__db_exists "$gsl_file_db_files" "$gsl_post_header_field_2" gsl_db_line_file="$gsl_post_header_field_2:$gsl_file_csum" if [[ "$gsl_db_file_hash" ]];then sed -i "${gsl_db_file_line_nbr}s,.*,$gsl_db_line_file," \ "$gsl_file_db_files" else echo "$gsl_post_header_field_2:$gsl_file_csum" \ >> "$gsl_file_db_files" fi } #======================================================================= # Check Post exists and get line NBR in DB | $1 DB file $2 TERM #======================================================================= gsl__db_exists() { case "$1" in "$gsl_file_db_posts") gsl_db_post_exists=` grep -n "$gsl_post" "$1"` if [[ "$gsl_db_post_exists" ]];then gsl_db_post_line_nbr=` awk -F":" '{print $1}' <<< "$gsl_db_post_exists"` gsl_db_post_status=` awk -F"|" '{print $5}' <<< "$gsl_db_post_exists"` fi ;; "$gsl_file_db_stats") gsl_db_stat_exists=` grep -n "$gsl_post" "$1"` if [[ "$gsl_db_stat_exists" ]];then gsl_db_stat_line_nbr=` awk -F":" '{print $1}' <<< "$gsl_db_stat_exists"` fi ;; "$gsl_file_db_files") gsl_db_file_exists=`grep -n "$2" "$1"` if [[ "$gsl_db_file_exists" ]];then gsl_db_file_line_nbr=` awk -F: '{print $1}' <<< "$gsl_db_file_exists"` gsl_db_file_hash=` awk -F: '{print $3}' <<< "$gsl_db_file_exists"` fi ;; esac } #======================================================================= # From gsl__loop_posts: Write DB #======================================================================= gsl__db_line_post() { case "$gsl_process" in Checked) #------------------------------------------------------------------- # Check if post exists in DB stats.db and get line #------------------------------------------------------------------- gsl_db_stat_line=` printf '%s%s%s%s%s%s%s%s%s%s\n' \ "$gsl_post|" \ "$gsl_post_stat_w|" \ "$gsl_post_stat_p|" \ "$gsl_post_stat_abbr|" \ "$gsl_post_stat_link|" \ "$gsl_post_stat_image|" \ "$gsl_post_stat_file|" \ "$gsl_post_stat_bq|" \ "$gsl_post_stat_bcode|" \ "${gsl_post_stat_mdb// /|}|"` if ! [[ "$gsl_checker_err" ]];then gsl__db_exists "$gsl_file_db_stats" if [[ "$gsl_db_stat_line_nbr" ]];then sed -i "${gsl_db_stat_line_nbr}s,.*,$gsl_db_stat_line," \ "$gsl_file_db_stats" && \ gsl__logs_print \ "$gsl_log_w" \ "DB" \ "Stat" \ "Line:$gsl_db_stat_line_nbr $gsl_post" \ "$gsl_file_db_stats" else echo "$gsl_db_stat_line" >> "$gsl_file_db_stats" && \ gsl__logs_print \ "$gsl_log_w" \ "DB" \ "Stat" \ "Line:NEW $gsl_db_stat_line" \ "$gsl_file_db_stats" fi fi #------------------------------------------------------------------- # Check if post exists in DB posts.db and get line / status #------------------------------------------------------------------- gsl__db_exists "$gsl_file_db_posts" if [[ "$gsl_checker_err" ]] && [[ "$gsl_db_post_line_nbr" ]];then sed -i "${gsl_db_post_line_nbr}d" "$gsl_file_db_posts" \ gsl__logs_print \ "$gsl_log_w" \ "DB" \ "Post" \ "Line:$gsl_db_post_line_nbr removed. Error in $gsl_post" \ "$gsl_file_db_posts" return fi echo -e "\nD> Pass next DB" gsl_db_post_line=` printf '%s%s%s%s%s%s%s\n' \ "$gsl_post_type|" \ "$gsl_post|" \ "$gsl_post_hash|" \ "$gsl_post_size|" \ "$gsl_process|" \ "${PWD}/$gsl_post|"\ "$gsl_db_post_files"` if [[ "$gsl_db_post_exists" ]];then sed -i "${gsl_db_post_line_nbr}s,.*,$gsl_db_post_line," \ "$gsl_file_db_posts" && \ gsl__logs_print \ "$gsl_log_w" \ "DB" \ "Post" \ "Line:REPLACED - $gsl_post - Hash: $gsl_post_hash" \ "$gsl_file_db_posts" gsl_checker_war=true else echo "$gsl_db_post_line" \ >> "$gsl_file_db_posts" && \ gsl__logs_print \ "$gsl_log_i" \ "DB" \ "Post" \ "Line:NEW - $gsl_post - Hash: $gsl_post_hash" \ "$gsl_file_db_posts" fi ;; esac }