#!/bin/bash
source /etc/profile
export LOCAL_INSTALL='yes'
export DB_UPDATE='yes'
export OVA_PWD=Y5upeAd9

# проверка доступного места
if (( 20000000 > $(df -P / | tail -n1 | awk '{print $4}') )); then
  echo "disk free size available < 20G !!!"
  exit 0
fi

### резевируемм текущую инсталяцию
# стандартный backup директории pf и базы
echo ">>> выполнится ТОЛЬКО на МАСТЕРЕ !!! (backup-and-maintenance.sh) <<<"

### обновление схемы базы если есть переменная DB_UPDATE=yes|on|1
if [ -n $DB_UPDATE ]; then
cat <<EOF | mysql pf
ALTER TABLE sms_carrier ADD COLUMN IF NOT EXISTS subject_pattern varchar(255) comment 'sprintf pattern for a subject';
ALTER TABLE sms_carrier ADD COLUMN IF NOT EXISTS body_pattern varchar(255) comment 'sprintf pattern for a body of an email';
ALTER TABLE sms_carrier ADD COLUMN IF NOT EXISTS auth_type tinyint(1) NOT NULL default 0 comment 'SMS-provider auth type (login/password or API-key)';
UPDATE sms_carrier SET name = 'SMSC', email_pattern = 'send@send.smsc.ru', subject_pattern = '', body_pattern = '%l%:%p%::::%s%:%m%', auth_type = 0 WHERE id = 100056;
DELETE FROM sms_carrier WHERE id != 100056;
ALTER TABLE locationlog ADD INDEX IF NOT EXISTS \`locationlog_start_time\` (\`start_time\`);
update pf_version set version='112.1' where version='12.1';
EOF
fi

##/usr/local/pf/addons/backup-and-maintenance.sh

# backup docker images
if [ ! -e "/srv/backup_old_img" ]; then
    mkdir -p /srv/backup_old_img
else
    rm -f /srv/backup_old_img/*
fi
docker save $(docker images -q) -o backup_old_img/anac.tar
### делаем список тегов
docker images | sed '1d' | awk '{print $1 " " $2 " " $3}' >backup_old_img/anac-img.list
#

##### хитрый шаг для кластера, чтобы он не наклал кучу логов после обновления
cp /usr/local/pf/conf/{cluster.conf,pf.conf,pfconfig.conf} /srv/backup_old_img/

#rm -rf /srv/anac-repo-old/
mv /srv/anac-repo /srv/anac-repo-old

### стопаем сервисы
###systemctl stop packetfence-galera-autofix
#systemctl stop packetfence-mariadb
/usr/local/pf/bin/cluster/maintenance --activate
#/usr/local/pf/bin/pfcmd service pf stop
systemctl disable packetfence-config
systemctl stop packetfence-config
#systemctl stop docker

### чистим docker
docker rm $(docker ps -q) -f
docker system prune -f
docker rmi $(docker images -q) -f

##### распаковываем новую версию и ...
#rm -rf /srv/*
tar -xvf docker-anac-update.tar -C /
cd /srv
######### правки #####################
usermod -s /bin/bash anac
sed -i -e 's/^docker pull/#docker pull/g' -e 's/^docker tag/#docker tag/g' lib.func
sed -i -e 's/grep ii/egrep "ii |rc "/g' lib.func
sed -i -e 's/\/usr\/bin\/bash/\/bin\/bash/g' lib.func
sed -i -e 's/systemctl unmask /systemctl unmask packetfence-tracking-config.path samba-ad-dc.service /g' lib.func
sed -i 's/echo "list add"/sed -r "\/anac-repo .*$\/d" -i \/etc\/apt\/sources.list \&\& sed -i "s\/^deb\/#deb\/g" \/etc\/apt\/sources.list \&\& sed -i "s\/^deb\/#deb\/g" \/etc\/apt\/sources.list.d\/anac.list \&\& sed -r "\$ a\\deb [trusted=yes] file:\/srv\/anac-repo\/ bullseye main" -i \/etc\/apt\/sources.list/g' axelnac-install.sh
./axelnac-install.sh

### возвращаем ноде память что она часть кластера
cp /srv/backup_old_img/*.conf /usr/local/pf/conf/
systemctl enable packetfence-config

#apt -y reinstall freeradius-common
dpkg -i /srv/anac-repo/pool/main/f/freeradius/freeradius-common_*.deb

#remove python3-impacket
dpkg -r --force-depends python3-impacket

###tar -xvf /srv/fingerbank.tgz -C /usr/local/
###chown -R pf:fingerbank /usr/local/fingerbank/conf /usr/local/fingerbank/db 

# отключил и перенес в роль
#/usr/local/pf/bin/cluster/maintenance --deactivate

# /usr/local/pf/bin/pfcmd configreload hard
