#!/bin/bash
#scvgetlog 2021/06/22
#Copyright J's Communication Co., Ltd.
#========================================
PROGNAME="scvgetlog"
PROGVER="4.0.1"
TARGET_DIR="/var/log"
SCV_DIR="/var/www/html/scv"
DATE=`date +%Y%m%d%H%M%S`
ZIPDATE=`date +%Y%m%d`
DB_NAME=`sudo cat /var/www/html/scv/.scvconf | grep SCV_DBNAME | cut -d = -f 2`
DB_USER="scvdirect"
DB_PASS=`sudo cat /var/www/html/scv/.scvconf | grep SCV_DBPWD | sed -e "s/SCV_DBPWD=//" | sed -e "s/'//g"`
CURRENT_DIR=`pwd`
LOG_DIR=`mktemp -d /tmp/scvlog_XXXX`
LOG_DIR_ZIP=`echo "$LOG_DIR" | sed -e 's@/tmp/@@g'`

if [ $# -ne 0 ];then
  if [ $1 = "-v" ];then
    echo $PROGVER
    exit 0
  fi
fi
sudo echo ""
echo "-------------------------------"
echo "$PROGNAME $PROGVER Started"
echo "-------------------------------"

echo "-------------------------------"
echo "check logs dir"
#mkdir
#if [ -d "$LOG_DIR" ]; then
#  echo "already exist $LOG_DIR"
#  echo "scvgetlog aborted"
#  exit 1
#fi

#scvver
echo "-------------------------------"
echo "scvver"
sudo scvver -all > $LOG_DIR/scvver.log

#scvlicense
echo "-------------------------------"
echo "scvlicense"
sudo scvlicense -licfullx > $LOG_DIR/licfull.log

#sysstartup (for scvcluster)
echo "-------------------------------"
echo "get scvstartup and scvdown.log"
if [ -e $TARGET_DIR"/scvstartup.log" ];then
  sudo cp $TARGET_DIR"/scvstartup.log" $LOG_DIR
else
  echo "scvstartup.log does not exist"
fi
if [ -e $TARGET_DIR"/scvdown.log" ];then
  sudo cp $TARGET_DIR"/scvdown.log" $LOG_DIR
else
  echo "scvdown.log does not exist"
fi

#syslog
echo "-------------------------------"
echo "get syslog"
if [ -e $TARGET_DIR"/syslog" ];then
  sudo cp $TARGET_DIR"/syslog"* $LOG_DIR
else
  echo "syslog does not exist"
fi

#journal
echo "-------------------------------"
echo "get journal"
if [ -e "$TARGET_DIR/journal" ];then
  sudo cp -r "$TARGET_DIR/journal" $LOG_DIR
else
  echo "journal does not exist"
fi

#kern.log
echo "-------------------------------"
echo "get kern.log"
if [ -e $TARGET_DIR"/kern.log" ];then
  sudo cp $TARGET_DIR"/kern.log"* $LOG_DIR
else
  echo "kern.log does not exist"
fi

#auth.log
echo "-------------------------------"
echo "get auth.log"
if [ -e "$TARGET_DIR/auth.log" ];then
  sudo cp $TARGET_DIR"/auth.log"* $LOG_DIR
else
  echo "auth.log does not exist"
fi

#docker.log
echo "-------------------------------"
echo "get docker.log"
if [ -e $TARGET_DIR"/upstart/docker.log" ];then
  sudo cp $TARGET_DIR"/upstart/docker.log"* $LOG_DIR
fi

if [ -e "/run/log/journal" ];then
  sudo cp -rv /run/log/journal "$LOG_DIR/run.log.journal"
fi

#debuglog
echo "-------------------------------"
echo "get debuglog"
sudo cp -rv /home/scvrun/.scv/debug $LOG_DIR

#hardwarelog
echo "-------------------------------"
echo "get hardware information"
sudo dmidecode > $LOG_DIR"/dmidecode.log"

#numa
echo "-------------------------------"
echo "get numa information"
sudo numactl -H > $LOG_DIR"/numactl.log"

echo "-------------------------------"
echo "get krb"
if [ -e "/etc/krb5.conf" ];then
  sudo cp /etc/krb5.conf $LOG_DIR
else
  echo "krb5.conf does not exist"
fi
if [ -e "/etc/pam.d" ];then
  sudo cp -r /etc/pam.d $LOG_DIR
else
  echo "/etc/pam.d does not exist"
fi

#laravel log
echo "-------------------------------"
echo "get laravel log"
if [ -e "/var/www/html/scv/storage/logs" ];then
  sudo cp -r "/var/www/html/scv/storage/logs" $LOG_DIR
else
  echo "laravel logs does not exist"
fi

if [ -e "$SCV_DIR/.scvnatconf" ];then
  sudo cp "$SCV_DIR/.scvnatconf" $LOG_DIR
fi
if [ -e "$SCV_DIR/.scvkrbconf" ];then
  sudo cp "$SCV_DIR/.scvkrbconf" $LOG_DIR
fi
sudo sed -e 's@SCV_DBPWD=.*@SCV_DBPWD=***@g' /var/www/html/scv/.scvconf > $LOG_DIR/.scvconf
sudo sed -e 's@DB_PASSWORD=.*@DB_PASSWORD=***@g' /var/www/html/scv/.env > $LOG_DIR/.env
if [ -e "$SCV_DIR/.scvldapconf" ];then
  sudo sed -e 's@BINDPWD=.*@BINDPWD=***@g' /var/www/html/scv/.scvldapconf > $LOG_DIR/.scvldapconf
fi

#ifconfig
echo "-------------------------------"
echo "get ifconfig"
ifconfig > $LOG_DIR"/ifconfig.log"

#netstat -a
echo "-------------------------------"
echo "get netstat"
netstat -a > $LOG_DIR"/netstat.log"

#hosts
echo "-------------------------------"
echo "get hosts"
sudo cp /etc/hosts $LOG_DIR

#df.log
#echo "-------------------------------"
#echo "get df.txt"
#sudo df -h 1>./logs/df.txt 2>&1

echo "-------------------------------"
echo "ps auxf"
ps auxf > $LOG_DIR"/ps_auxf.log"

echo "-------------------------------"
echo "dmesg"
dmesg > $LOG_DIR"/dmesg.log"

echo "-------------------------------"
echo "my.cnf"
if [ -e "/etc/mysql" ];then
  sudo cp -r /etc/mysql $LOG_DIR/mysql.conf
else
  echo "/etc/mysql does not exist"
fi

echo "-------------------------------"
echo "apache2 log"
if [ -e "/var/log/apache2" ];then
  sudo cp -r /var/log/apache2 $LOG_DIR
else
  echo "/var/log/mysql does not exist"
fi

echo "-------------------------------"
echo "mysql log"
if [ -e "/var/log/mysql" ];then
  sudo cp -r /var/log/mysql $LOG_DIR
else
  echo "/var/log/mysql does not exist"
fi

echo "-------------------------------"
echo "mysql dump"
DUMP_CMD="mysqldump --no-tablespaces -u $DB_USER -p'$DB_PASS' -t $DB_NAME"
eval "$DUMP_CMD clientlogs --single-transaction" > $LOG_DIR"/clientlogs.sql"
eval "$DUMP_CMD performances --single-transaction" > $LOG_DIR"/performances.sql"
eval "$DUMP_CMD scvconf --single-transaction" > $LOG_DIR"/scvconf.sql"
eval "$DUMP_CMD clusters --single-transaction" > $LOG_DIR"/clusters.sql"

if [ `scvver -scv | grep '=1.2.'` ];then
  :
else
  eval "$DUMP_CMD filelogs --single-transaction" > $LOG_DIR"/filelogs.sql"
fi
#sudo tar cvpzf "logs$DATE.tar.gz" -C /tmp `basename $LOG_DIR`

echo "-------------------------------"
echo "get docker status"
docker version 1>$LOG_DIR"/docker_version.txt" 2>&1
docker ps -a 1>$LOG_DIR"/docker_ps.txt" 2>&1
docker info 1>$LOG_DIR"/docker_info.txt" 2>&1
docker images 1>$LOG_DIR"/docker_images.txt" 2>&1


echo "-------------------------------"
echo "get scv directory"
if [ -e "/var/log/scv" ];then
  sudo cp -rv /var/log/scv $LOG_DIR
fi

echo "-------------------------------"
echo "get package list"
dpkg -l > $LOG_DIR"/dpkg_list.txt" 2>&1

echo "-------------------------------"
echo "get sysctl -a"
sudo sysctl -a > $LOG_DIR"/sysctl.txt" 2>&1

if [ -e "/var/www/html/scv/revobr/kits/versioninfo.json" ];then
  echo "-------------------------------"
  echo "get version information"
  sudo cp -p /var/www/html/scv/revobr/kits/versioninfo.json $LOG_DIR
fi

echo "-------------------------------"
cd /tmp
sudo zip -re --password="scvx$ZIPDATE" logs$DATE.zip $LOG_DIR_ZIP
sudo mv logs$DATE.zip $CURRENT_DIR
cd $CURRENT_DIR

sudo rm -rf $LOG_DIR

echo "-------------------------------"
echo "GETLOG Finished"
echo "-------------------------------"
