#!/bin/bash
CFGFILE=/etc/opt/sshbuk/sshbuk.vars
#CFGFILE=$HOME/sshbuk/sshbuk.vars
#CFGFILE=/root/sshbuk/sshbuk.vars
## настройки по-умолчанию (можно переопределить ключами в ком. строке)
DBLOCALUSER=db_report
DBLOCALNAME=ubuk
REMOTE_CMD="psql ubuk -At -c \"SELECT 'INSERT INTO sd_compinfo VALUES('||id_shop||',%x,'''||TO_CHAR(optime,'YYYY-MM-DD HH24:MI:SS')||''','''||PLACE||''','''||param||''','''||subparam||''','''||val||''');' FROM sd_compinfo\""
TODB=yes

show_help() {
    echo "--------------------------------------------------"
    echo "Копирование настроек с удаленной АЗС"
    echo "--------------------------------------------------"
};

if [ -f $CFGFILE ]; then
    . $CFGFILE
else
    echo "Не найден файл \"$CFGFILE\"" >& 2
    exit 1
fi

if [ -f $BINDIR/sshbuk.fn ]; then
    . $BINDIR/sshbuk.fn
else
    echo "Не найден файл \"sshbuk.fn\"" >& 2
    exit 1
fi

fn_make_log $LOGDIR
fn_to_log ""
fn_to_log "$(date +%H:%M:%S) $(basename $0) \"$@\""

## анализ командной строки
fn_command_line "$@"
AZS=$cml_azs
IP=$cml_ipadr
CML_TAIL=$cml_tail
TARGETFIRM=$cml_target2
if [ ! -z "$cml_user" ]; then 
    DBLOCALUSER=$cml_user;  
fi
if [ ! -z "$cml_db" ]; then 
    DBLOCALNAME=$cml_db
fi

## в ком. строке должны быть заданы АЗС и смена (или "-dict")
if [ -z "$AZS" ]; then
    show_help
    fn_to_log "$(date +%H:%M:%S) exit 1"
    exit 1
fi
if [ -z "$IP" ]; then
    show_help
    fn_to_log "$(date +%H:%M:%S) exit 1"
    exit 1
fi
if [ -z "$TARGETFIRM" ]; then
    show_help
    fn_to_log "$(date +%H:%M:%S) exit 1"
    exit 1
fi

CML=$CML"-ip $IP -azs $AZS"

TEMPRCV=$DATADIR/tmpconf.$AZS.$(date "+%y%m%d%H%M%S").f.${TARGETFIRM}.sql
FILERCV=$DATADIR/conf.${AZS}.f.${TARGETFIRM}.sql

if [ -f $TEMPRCV ]; then rm $TEMPRCV; fi
if [ -f $FILERCV ]; then rm $FILERCV; fi

echo "DELETE FROM sd_compinfo WHERE id_shop=$AZS AND fnum=$TARGETFIRM;" > $TEMPRCV

$BINDIR/sshbuk $CML_TAIL $CML -cmd "$REMOTE_CMD  | sed 's/%x/$TARGETFIRM/g' " >> $TEMPRCV
ERR=$?
fn_to_log "$(date +%H:%M:%S) sshbuk=$ERR"
if [ $ERR -ne 0 ]; then
    rm $TEMPRCV 2>/dev/null
    exit 1
fi

# размер архива не должен быть нулевым
SIZE=$(ls -s $TEMPRCV | awk '{print $1}')
if [ -z "$SIZE" -o "$SIZE" == "0" ]; then
    rm $TEMPRCV 2>/dev/null
    MSG="exit; ошибка при получении файла: SIZE=\"$SIZE\""
    echo $MSG >& 2
    fn_to_log "$(date +%H:%M:%S) $MSG"
    exit 1
fi

mv $TEMPRCV $FILERCV
rm $TEMPRCV 2>/dev/null

if [ "$TODB" == "yes" ]; then
    psql $DBLOCALNAME -1 -q -h localhost -U $DBLOCALUSER -f $FILERCV

    rm $FILERCV 2>/dev/null
    
    FILEINFO=$DATADIR/conf.${AZS}.f.${TARGETFIRM}.conf
    psql $DBLOCALNAME -At -h localhost -U $DBLOCALUSER -c "SELECT place, param, subparam, val FROM sd_compinfo WHERE id_shop=$AZS AND fnum=$TARGETFIRM AND param=1" > $FILEINFO
    
    rm $FILEINFO 2>/dev/null
fi

fn_to_log "$(date +%H:%M:%S) ok"

exit 0


