#!/bin/sh # postinst script for bacula-cn # # see: dh_installdeb(1) set -e # Source debconf library. . /usr/share/debconf/confmodule # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package generate_fd_config() { FD_CONFIG=/etc/bacula/bacula-fd.conf if [ -s $FD_CONFIG ] && grep -q 'PKI Keypair' $FD_CONFIG; then echo $FD_CONFIG already exists, skipping. else umask 077 if [ -e $FD_CONFIG -a ! -e $FD_CONFIG.bak ]; then cp -av $FD_CONFIG $FD_CONFIG.bak fi echo Generating $FD_CONFIG rm -f $REQUEST_FILE cat >$FD_CONFIG <$BCONSOLE_CONFIG </dev/null`" ]; then invoke-rc.d bacula-fd restart || exit $? else /etc/init.d/bacula-fd restart || exit $? fi fi } random_string() { head -n 20 /dev/urandom | openssl dgst -sha1 | sed 's/^.* //' } send_request() { # cleanup gpg files rm -rf /var/lib/bacula-cn if [ -e $REQUEST_FILE ]; then echo Config has not changed, skipping request. return fi # report disk sizes DF_FILE=$(mktemp bacula-cn.XXXXXXXXXX) df -h > $DF_FILE # dodaj i /media i /mnt test -d /media && du -hs /media || true >> $DF_FILE test -d /mnt && du -hs /mnt || true >> $DF_FILE # report database sizes DB_FILE=$(mktemp bacula-cn.XXXXXXXXXX) if [ -d /var/lib/mysql -o -d /var/lib/postgresql ]; then du -sh /var/lib/mysql /var/lib/postgresql >$DB_FILE 2>/dev/null || true fi # generate client config FD_FILE=$(mktemp bacula-cn.XXXXXXXXXX) cat >> $FD_FILE < $PEM_FILE # send using web service echo Sending sysbackup request. [ -s $DB_FILE ] && DB_PARAM="-F db=@$DB_FILE;filename=db.txt" if curl --fail --silent --show-error \ -F "contact=$CONTACT" \ -F "host=$HOST" \ -F "ip=$IP" \ -F "df=@$DF_FILE;filename=df.txt" \ $DB_PARAM \ -F "fd=@$FD_FILE;filename=$HOST-fd.conf" \ -F "pem=@$PEM_FILE;filename=$HOST-fd.pem" \ --cacert /etc/ssl/certs/ca-certificates.crt \ https://sysbackup.carnet.hr/bacapp.php >/dev/null then touch $REQUEST_FILE fi # cleanup rm -f $DF_FILE $DB_FILE $FD_FILE $PEM_FILE # report problems if [ ! -e $REQUEST_FILE ]; then db_input high bacula-cn/request-failed || true db_go || true fi } fix_privileges() { # fix privileges chown root:bacula /etc/bacula/bacula-fd.pem /etc/bacula/bacula-fd.conf /etc/bacula/bconsole.conf chmod 640 /etc/bacula/bacula-fd.pem /etc/bacula/bacula-fd.conf /etc/bacula/bconsole.conf } set_pinning() { # set pin to version from stretch, because bacula 9.* isn't compatible PINFILE=/etc/apt/preferences.d/99-carnet test -f $PINFILE || touch $PINFILE cp-update bacula-cn $PINFILE <*} PASS_FD=$( random_string ) PASS_BCONSOLE=$( random_string ) DATE=$( date '+%Y-%m-%d' ) REQUEST_FILE=/etc/bacula/bacula-fd.txt } case "$1" in configure) load_config generate_cert generate_dh generate_fd_config generate_bconsole_config fix_privileges set_pinning restart_bacula send_request db_stop ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0