Add Jamie McClelland's cstream patches
[matthijs/upstream/backupninja.git] / src / backupninja.in
index 114d66c2faef86fb13967ecaf9ea97c259cc80fe..6295198761c3018ceb4add8fdba08d9faf1c02ba 100755 (executable)
@@ -131,32 +131,40 @@ function msg {
 
 function check_perms() {
    local file=$1
+   debug "check_perms $file"
    local perms
-   perms=($(stat -L --format='%a %g %G %u %U' $file))
-   local gperm=${perms[0]:1:1}
-   local wperm=${perms[0]:2:1}
-   local gid=${perms[1]}
-   local group=${perms[2]}
-   local owner=${perms[3]}
+   local owners
+
+   perms=($(stat -L --format='%A' $file))
+   debug "perms: $perms"
+   local gperm=${perms:4:3}
+   debug "gperm: $gperm"
+   local wperm=${perms:7:3}
+   debug "wperm: $wperm"
+
+   owners=($(stat -L --format='%g %G %u %U' $file))
+   local gid=${owners[0]}
+   local group=${owners[1]}
+   local owner=${owners[2]}
 
    if [ "$owner" != 0 ]; then
       echo "Configuration files must be owned by root! Dying on file $file"
       fatal "Configuration files must be owned by root! Dying on file $file"
    fi
    
-   if [ $wperm -gt 0 ]; then
+   if [ "$wperm" != '---' ]; then
       echo "Configuration files must not be world writable/readable! Dying on file $file"
       fatal "Configuration files must not be world writable/readable! Dying on file $file"
    fi
 
-   if [ $gperm -gt 0 ]; then
+   if [ "$gperm" != '---' ]; then
       case "$admingroup" in
          $gid|$group) :;;
 
          *)
            if [ "$gid" != 0 ]; then
-              echo "Configuration files must writable/readable by group ${perms[2]}! Dying on file $file"
-              fatal "Configuration files must writable/readable by group ${perms[2]}! Dying on file $file"
+              echo "Configuration files must not be writable/readable by group $group! Use the admingroup option in backupninja.conf. Dying on file $file"
+              fatal "Configuration files must not be writable/readable by group $group! Use the admingroup option in backupninja.conf. Dying on file $file"
            fi
          ;;
          esac
@@ -426,6 +434,7 @@ setfile $conffile
 getconf configdirectory @CFGDIR@/backup.d
 getconf scriptdirectory @datadir@
 getconf reportemail
+getconf reportspace
 getconf reportsuccess yes
 getconf reportwarning yes
 getconf loglevel 3
@@ -436,11 +445,14 @@ getconf usecolors "yes"
 getconf SLAPCAT /usr/sbin/slapcat
 getconf LDAPSEARCH /usr/bin/ldapsearch
 getconf RDIFFBACKUP /usr/bin/rdiff-backup
+getconf CSTREAM=/usr/bin/cstream
+getconf MYSQLADMIN /usr/bin/mysqladmin
 getconf MYSQL /usr/bin/mysql
 getconf MYSQLHOTCOPY /usr/bin/mysqlhotcopy
 getconf MYSQLDUMP /usr/bin/mysqldump
 getconf PGSQLDUMP /usr/bin/pg_dump
 getconf PGSQLDUMPALL /usr/bin/pg_dumpall
+getconf PGSQLUSER postgres
 getconf GZIP /bin/gzip
 getconf RSYNC /usr/bin/rsync
 getconf admingroup root
@@ -526,6 +538,17 @@ if [ $doit == 1 ]; then
                        echo ${messages[$i]}
                done
                echo -e "$errormsg"
+               if [ "$reportspace" == "yes" ]; then
+                       previous=""
+                       for i in $(ls "$configdirectory"); do
+                       backuploc=$(grep ^directory "$configdirectory"/"$i" | awk '{print $3}')
+                       if [ "$backuploc" != "$previous" ]; then
+                               mountdev=$(mount | grep "$backuploc" | awk '{print $1}')
+                               df -h "$mountdev"
+                               previous="$backuploc"
+                               fi
+                       done
+               fi
        } | mail -s "backupninja: $hostname $subject" $reportemail
 fi