X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=debian%2Fpostinst;h=91a8f1c105f345eed8f05288adbeb38977f1c9e8;hb=HEAD;hp=b1bdf4684e4e077a195a10a9ff2e44be6f62232e;hpb=d4f02f986029849da61d0bf3a3466b589033aa4c;p=bacula-cn.git diff --git a/debian/postinst b/debian/postinst index b1bdf46..0ac5c7e 100644 --- a/debian/postinst +++ b/debian/postinst @@ -33,7 +33,7 @@ generate_fd_config() { fi echo Generating $FD_CONFIG - CONFIG_CHANGED=1 + rm -f $REQUEST_FILE cat >$FD_CONFIG <$BCONSOLE_CONFIG < $REQUEST_FILE <> $REQUEST_FILE <> $REQUEST_FILE + # report disk sizes + DF_FILE=$(mktemp bacula-cn.XXXXXXXXXX) + df -h > $DF_FILE -# attachment: database sizes -if [ -d /var/lib/mysql -o -d /var/lib/postgresql ]; then - cat >> $REQUEST_FILE <> $DF_FILE + test -d /mnt && du -hs /mnt || true >> $DF_FILE -EOF - - du -sh /var/lib/mysql /var/lib/postgresql 2>/dev/null \ - | $GPG >> $REQUEST_FILE -fi - -# attachment: client config -cat >> $REQUEST_FILE <$DB_FILE 2>/dev/null || true + fi - cat <> $REQUEST_FILE + # generate client config + FD_FILE=$(mktemp bacula-cn.XXXXXXXXXX) + cat >> $FD_FILE <> $REQUEST_FILE <> $REQUEST_FILE +Job { + Name = "$HOST" + Client = $HOST-fd + JobDefs = "Job_TapeBackup" + Messages = messages-$HOST +} -cat >> $REQUEST_FILE </dev/null`" ]; then - echo Mailing request from $REQUEST_FILE - if sendmail -t -oi < $REQUEST_FILE; then - requestsent=1 - fi + # client certificate + PEM_FILE=$(mktemp bacula-cn.XXXXXXXXXX) + sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' \ + /etc/bacula/bacula-fd.pem > $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 - if [ -z "$requestsent" ]; then - db_input high bacula-cn/mail-failed || true + # 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' ) - CONFIG_CHANGED= + REQUEST_FILE=/etc/bacula/bacula-fd.txt } case "$1" in @@ -330,8 +326,11 @@ case "$1" in generate_fd_config generate_bconsole_config + fix_privileges + set_pinning + restart_bacula - send_mail + send_request db_stop ;;