#!/bin/bash

if [[ $EUID -ne 0 ]]; then
	echo "Запустите программу с правами администратора, например с sudo"
	exit 1
fi

if [ -f /usr/bin/pdp-id ]; then 
	sysmaxilev=`cat /sys/module/parsec/parameters/max_ilev`
	cur_ilev=`pdp-id -i`
	echo "cur_ilev=$cur_ilev   sysmaxilev=$sysmaxilev"
	if [ x"$cur_ilev" != x"$sysmaxilev" ]; then
		echo "Запустите программу под высоким уровнем целостности (если установлен)"
		exit 1
	fi
fi

NAME=`cat /etc/astra_version | sed  's| ||g' | sed  's|(||g' | sed  's|)||g' | sed  's|\.|-|g' `

echo "Создание архива с системными журналами и конфигурацией ОС ASTRALINUX $NAME .."

TMPDIR=`mktemp -d`

COMPNAME=`hostname -s`

mkdir -p $TMPDIR/hw-info/
mkdir -p $TMPDIR/sw-info/

cat /proc/cpuinfo > $TMPDIR/hw-info/cpuinfo
cat /proc/meminfo > $TMPDIR/hw-info/meminfo
cat /proc/mounts > $TMPDIR/hw-info/mounts
lspci -knn> $TMPDIR/hw-info/lspci 2>&1
lsusb > $TMPDIR/hw-info/lsusb 2>&1
aplay -l > $TMPDIR/hw-info/aplay 2>&1
dmesg > $TMPDIR/hw-info/dmesg 2>&1
lsinput > $TMPDIR/hw-info/lsinput 2>&1
glxinfo > $TMPDIR/hw-info/glxinfo 2>&1
xrandr --verbose > $TMPDIR/hw-info/xrandr 2>&1

uname -a > $TMPDIR/sw-info/kernel.txt 2>&1
df -h > $TMPDIR/sw-info/df.txt 2>&1
passwd -Sa > $TMPDIR/sw-info/users.txt 2>&1
dpkg -l > $TMPDIR/sw-info/pkgs.txt 2>&1

# Копирование всех символических ссылок кроме каталогов
find /etc -maxdepth 1 -type l -exec cp -H {} $TMPDIR/sw-info 2>&1 \; # BT-23769

find /home -maxdepth 2 -name ".xsession-errors*" | while read fname; do
	xname=`echo $fname | tr '/' '_'`
	cp $fname $TMPDIR/sw-info/$xname
done

DIRS="/etc /var/log hw-info sw-info"
if [ -d /usr/share/X11/xorg.conf.d ] ; then
    DIRS="$DIRS /usr/share/X11/xorg.conf.d"
fi
if [ -d /var/run/connman ] ; then
    DIRS="$DIRS /var/run/connman"
fi
EXCLUDE='*shadow* ssh_*_key etc/ssl/private/* *.pem *.key'
DATE=`date +"%d_%m_%Y-%H_%M_%S"`

excludes=""
set -f
for excl in $EXCLUDE; do
    excludes="$excludes --exclude=$excl";
done

pushd $TMPDIR > /dev/null
tar $excludes --sparse -Jcf "/tmp/astra-logs-${COMPNAME}-${NAME}-${DATE}.tar.xz" $DIRS 2>&1 | grep -v "\`/'"
ret=$PIPESTATUS
popd > /dev/null
set +f

rm -rf $TMPDIR

if [ $ret -ne 0 ]; then
	echo "ОШИБКА"
	exit 1
fi

echo "Архив с системными журналами ASTRALINUX-${NAME}:"
ls -lah /tmp/astra-logs-${COMPNAME}-${NAME}-${DATE}.tar.xz
